summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2018-09-15 10:05:24 -0700
committerRich Felker <dalias@aerifal.cx>2018-09-15 13:22:12 -0400
commitdbcfb16e43af28ba919f651c51d7a2f15af656a1 (patch)
treece99f9262a3288efe363e311cd26aae5983ec5f9
parentd6c855caa88ddb1ab6e24e23a14b1e7baf4ba9c7 (diff)
downloadmusl-dbcfb16e43af28ba919f651c51d7a2f15af656a1.tar.gz
always reset DST rules during tzset
do_tzset() did't always reset the DST transition rules r0 and r1. That means the rules from older TZ settings could leak into newer ones.
-rw-r--r--src/time/__tz.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/time/__tz.c b/src/time/__tz.c
index 51e66514..185642e8 100644
--- a/src/time/__tz.c
+++ b/src/time/__tz.c
@@ -130,6 +130,8 @@ static void do_tzset()
if (old_tz && !strcmp(s, old_tz)) return;
+ for (i=0; i<5; i++) r0[i] = r1[i] = 0;
+
if (zi) __munmap((void *)zi, map_size);
/* Cache the old value of TZ to check if it has changed. Avoid
@@ -194,7 +196,6 @@ static void do_tzset()
const unsigned char *p;
__tzname[0] = __tzname[1] = 0;
__daylight = __timezone = dst_off = 0;
- for (i=0; i<5; i++) r0[i] = r1[i] = 0;
for (p=types; p<abbrevs; p+=6) {
if (!p[4] && !__tzname[0]) {
__tzname[0] = (char *)abbrevs + p[5];