From df5ce4bf1f8bb2e212efeef22b00a46c952d358f Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 9 Mar 2021 18:43:19 +0100 Subject: [PATCH] icaltz-util: Correct 64-bit value decode from tzfile on little endian This can be seen for example on Asia/Kolkata, where the transition time starts back at 1854-06-27. When this negative value is type-cast to int it looses upper bytes and truncates the value to smaller, into year 2006 instead. --- src/libical/icaltz-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c index 0afa17fa..3658d43c 100644 --- a/src/libical/icaltz-util.c +++ b/src/libical/icaltz-util.c @@ -168,7 +168,7 @@ static long long int decode64(const void *ptr) if ((BYTE_ORDER == BIG_ENDIAN)) { return *(const long long int *)ptr; } else { - return (int)bswap_64(*(const unsigned long long int *)ptr); + return (long long int)bswap_64(*(const unsigned long long int *)ptr); } #endif } -- 2.26.2