From: Rich Felker Date: Mon, 2 Jan 2017 22:30:40 +0000 (-0500) Subject: fix strftime %y for negative years X-Git-Tag: v1.1.17~117 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=61fb81e3959ecf0848eef8d2767bb80ae5d1a68e;p=oweals%2Fmusl.git fix strftime %y for negative years commit 583ea83541dcc6481c7a1bd1a9b485526bad84a1 fixed the case where tm_year is negative but the resulting year (offset by 1900) was still positive, which is always the case for time_t values that fit in 32 bits, but not for arbitrary inputs. based on an earlier patch by Julien Ramseier which was overlooked at the time the previous fix was applied. --- diff --git a/src/time/strftime.c b/src/time/strftime.c index e103e02b..a3039204 100644 --- a/src/time/strftime.c +++ b/src/time/strftime.c @@ -166,8 +166,8 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm * item = T_FMT; goto nl_strftime; case 'y': - val = tm->tm_year % 100; - if (val<0) val += 100; + val = (tm->tm_year + 1900LL) % 100; + if (val < 0) val = -val; goto number; case 'Y': val = tm->tm_year + 1900LL;