 685ae2687b
			
		
	
	685ae2687b
	
	
	
		
			
			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>
		
			
				
	
	
		
			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;
 | |
|  
 |