fix parsing offsets after long timezone names
authorSamuel Holland <samuel@sholland.org>
Sat, 22 Feb 2020 22:01:13 +0000 (16:01 -0600)
committerRich Felker <dalias@aerifal.cx>
Sat, 21 Mar 2020 16:47:09 +0000 (12:47 -0400)
commit33338ebc853d37c80f0f236cc7a92cb0acc6aace
treeea0bdec858a89dbb17ec830a35ac94037e5dd566
parent8e452abae67db445fb6c3e37cd566c4788c2e8f3
fix parsing offsets after long timezone names

TZ containg a timezone name with >TZNAME_MAX characters currently
breaks musl's timezone parsing. getname() stops after TZNAME_MAX
characters. getoff() will consume no characters (because the next
character is not a digit) and incorrectly return 0. Then, because
there are remaining alphabetic characters, __daylight == 1, and
dst_off == -3600.

getname() must consume the entire timezone name, even if it will not
fit in d/__tzname, so when it returns, s points to the offset digits.
src/time/__tz.c