From 3305f3557064a3cc981e3566959d7833bb81e192 Mon Sep 17 00:00:00 2001 From: Freddie Chopin Date: Tue, 15 May 2018 20:58:08 +0200 Subject: [PATCH] Fix 32-bit overflow in mktime() when time_t is 64-bits long When converting number of days since epoch (32-bits) to seconds, calculations using 32-bit `long` overflow for years above 2038. Solve this by casting number of days to `time_t` just before final multiplication. Signed-off-by: Freddie Chopin --- newlib/libc/time/mktime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/time/mktime.c b/newlib/libc/time/mktime.c index 9bcef3268..02032599a 100644 --- a/newlib/libc/time/mktime.c +++ b/newlib/libc/time/mktime.c @@ -188,7 +188,7 @@ mktime (struct tm *tim_p) } /* compute total seconds */ - tim += (days * _SEC_IN_DAY); + tim += (time_t)days * _SEC_IN_DAY; TZ_LOCK;