fix timezone parser code crashing on 64bit sys
authorrofl0r <retnyg@gmx.net>
Mon, 4 Nov 2013 15:13:21 +0000 (15:13 +0000)
committerrofl0r <retnyg@gmx.net>
Mon, 4 Nov 2013 15:13:21 +0000 (15:13 +0000)
if sizeof(time_t) == 8, this code path was missing the correct
offset into the zoneinfo file, using the header magic to do
offset calculations.
the 6 32bit fields to be read start at offset 20.

src/time/__tz.c

index 81676d3..47964c4 100644 (file)
@@ -176,7 +176,7 @@ static void do_tzset()
        if (map) {
                int scale = 2;
                if (sizeof(time_t) > 4 && map[4]=='2') {
-                       size_t skip = zi_dotprod(zi, VEC(1,1,8,5,6,1), 6);
+                       size_t skip = zi_dotprod(zi+20, VEC(1,1,8,5,6,1), 6);
                        trans = zi+skip+44+20;
                        scale++;
                } else {