fix TZ parsing logic for identifying POSIX-form strings
authorRich Felker <dalias@aerifal.cx>
Wed, 23 Jun 2021 21:22:47 +0000 (17:22 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 23 Jun 2021 21:30:10 +0000 (17:30 -0400)
commit937822abb6ac48880939be3c60e6b57bddf62cf6
tree0160a87a71cb0a5b005519a9e6219837aa6a4a53
parent1f0c7cb1cc2170bf230623dc0b57d9a9f001af08
fix TZ parsing logic for identifying POSIX-form strings

previously, the contents of the TZ variable were considered a
candidate for a file/path name only if they began with a colon or
contained a slash before any comma. the latter was very sloppy logic
to avoid treating any valid POSIX TZ string as a file name, but it
also triggered on values that are not valid POSIX TZ strings,
including 3-letter timezone names without any offset.

instead, only treat the TZ variable as POSIX form if it begins with a
nonzero standard time name followed by +, -, or a digit.

also, special case GMT and UTC to always be treated as POSIX form
(with implicit zero offset) so that a stray file by the same name
cannot break software that depends on setting TZ=GMT or TZ=UTC.
src/time/__tz.c