From: Ulrich Drepper Date: Wed, 23 Jul 2008 14:19:15 +0000 (+0200) Subject: mktime.c: normalize tp->tm_isdst value to -1/0/1. X-Git-Tag: v0.1~7185 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=5490f5a9848076555e5cdac9b6613b9d107a6ac2;p=gnulib.git mktime.c: normalize tp->tm_isdst value to -1/0/1. * lib/mktime.c (__mktime_internal): Normalize tp->tm_isdst value. Reported by Michael Ringe in . --- diff --git a/ChangeLog b/ChangeLog index 97f6c7667..6c4830867 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2008-07-23 Ulrich Drepper + mktime.c: normalize tp->tm_isdst value to -1/0/1. + * lib/mktime.c (__mktime_internal): Normalize tp->tm_isdst value. + Reported by Michael Ringe in + . + * lib/canonicalize-lgpl.c (__realpath): Avoid buffer overflow after readlink on platforms without PATH_MAX. diff --git a/lib/mktime.c b/lib/mktime.c index a91fb20e6..f9e7b6071 100644 --- a/lib/mktime.c +++ b/lib/mktime.c @@ -290,7 +290,9 @@ __mktime_internal (struct tm *tp, int mday = tp->tm_mday; int mon = tp->tm_mon; int year_requested = tp->tm_year; - int isdst = tp->tm_isdst; + /* Normalize the value. */ + int isdst = ((tp->tm_isdst >> (8 * sizeof (tp->tm_isdst) - 1)) + | (tp->tm_isdst != 0)); /* 1 if the previous probe was DST. */ int dst2;