From: Rich Felker Date: Sat, 7 Jun 2014 00:46:05 +0000 (-0400) Subject: use default timezone from /etc/localtime if $TZ is unset/blank X-Git-Tag: v1.1.3~36 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f616294914e7c289791d856dca636bbccad5fef7;p=oweals%2Fmusl.git use default timezone from /etc/localtime if $TZ is unset/blank the way this is implemented, it also allows explicit setting of TZ=/etc/localtime even for suid programs. this is not a problem because /etc/localtime is a trusted path, much like the trusted zoneinfo search path. --- diff --git a/src/time/__tz.c b/src/time/__tz.c index 6d7173cf..92c43a57 100644 --- a/src/time/__tz.c +++ b/src/time/__tz.c @@ -128,7 +128,7 @@ static void do_tzset() "/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0"; s = getenv("TZ"); - if (!s || !*s) s = __gmt; + if (!s || !*s) s = "/etc/localtime"; if (old_tz && !strcmp(s, old_tz)) return; @@ -153,7 +153,8 @@ static void do_tzset() if (*s == ':' || ((p=strchr(s, '/')) && !memchr(s, ',', p-s))) { if (*s == ':') s++; if (*s == '/' || *s == '.') { - if (!libc.secure) map = __map_file(s, &map_size); + if (!libc.secure || !strcmp(s, "/etc/localtime")) + map = __map_file(s, &map_size); } else { size_t l = strlen(s); if (l <= NAME_MAX && !strchr(s, '.')) {