mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
65144c96eb
Changes:
new features:
- qsort_r function (POSIX-future)
- pthread_getname_np extension function
- hard float on SPE FPU for powerpc-sf
- SEEK_DATA and SEEK_HOLE exposed in unistd.h (Linux extensions)
compatibility:
- free now preserves errno (POSIX-future requirement)
- setjmp is declared explicitly with returns_twice for non-GCC compilers
- macro version of isascii is no longer defined for C++
- dynamic linker now tolerates zero-length LOAD segments
- epoll_[p]wait is now a cancellation point
- pwd/grp functions no longer fail on systems without AF_UNIX support
- POSIX TZ parsing is stricter to allow more names to fallback to files
- NULL is now defined as nullptr when used in C++11 or later
- gettext now accepts null pointer as argument
bugs fixed:
- old regression in wcwidth of Hangul combining (vowel/final) letters
- duplocale used wrong malloc when malloc was replaced (1.2.2 regression)
- fmaf rounded wrong on archs without FE_TOWARDZERO (all softfloat archs)
- popen didn't honor requirement not to leak other popen pipe fds to child
- aligned_alloc and variants crashed on allocation failure
- dl_iterate_phdr reported incorrect module TLS pointers
- mishandling of some inputs in acoshf and expm1f and functions using them
- potentially wrong-sign zero in cproj functions at infinity
- multiple bugs in legacy function cuserid
- minor posix_spawn file actions API conformance issues
- pthread_setname_np fd leak
- out-of-bound read in zoneinfo handling with distant-past times
- out-of-tree builds lacked generated debug cfi for x86 asm
arch-specific bugs fixed:
- powerpc (32-bit) struct shmid_ds layout was wrong for some fields
- time64 struct layout was wrong in sound ioctl fallback (32-bit archs)
In addition it contains the following improvements:
* protect stack canary from leak via read-as-string by zeroing second byte
* fix excessively slow TLS performance on some mips models
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Rui Salvaterra <rsalvaterra@gmail.com>
Tested-by: Rui Salvaterra <rsalvaterra@gmail.com>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
(cherry picked from commit 685ae2687b
)
29 lines
748 B
Diff
29 lines
748 B
Diff
--- a/src/time/__tz.c
|
|
+++ b/src/time/__tz.c
|
|
@@ -32,6 +32,9 @@ static int r0[5], r1[5];
|
|
static const unsigned char *zi, *trans, *index, *types, *abbrevs, *abbrevs_end;
|
|
static size_t map_size;
|
|
|
|
+static const char *tzfile;
|
|
+static size_t tzfile_size;
|
|
+
|
|
static char old_tz_buf[32];
|
|
static char *old_tz = old_tz_buf;
|
|
static size_t old_tz_size = sizeof old_tz_buf;
|
|
@@ -133,6 +136,15 @@ static void do_tzset()
|
|
"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
|
|
|
|
s = getenv("TZ");
|
|
+
|
|
+ /* if TZ is empty try to read it from /etc/TZ */
|
|
+ if (!s || !*s) {
|
|
+ if (tzfile)
|
|
+ __munmap((void*)tzfile, tzfile_size);
|
|
+
|
|
+ s = tzfile = (void *)__map_file("/etc/TZ", &tzfile_size);
|
|
+ }
|
|
+
|
|
if (!s) s = "/etc/localtime";
|
|
if (!*s) s = __utc;
|
|
|