diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-02-03 03:18:58 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-02-03 03:18:58 +0000 |
commit | 1228ed5cd520342af906f07eb1b21be82d0b40d0 (patch) | |
tree | de90f47d4acf5c7d92e68d9e5bf4e43a33144a17 /time | |
parent | c0e4567461c09ba47ddbc20e6b0ab09bdb0237ab (diff) | |
download | glibc-1228ed5cd520342af906f07eb1b21be82d0b40d0.tar.gz glibc-1228ed5cd520342af906f07eb1b21be82d0b40d0.tar.xz glibc-1228ed5cd520342af906f07eb1b21be82d0b40d0.zip |
update from main archive 970202 cvs/libc-970203
1997-02-03 02:33 Ulrich Drepper <drepper@cygnus.com> * elf/dl-deps.c (_dl_map_object_deps): Handle multiple AUXILIARY entries. This is still no complete implementation since AUXILIARY entries in other shared objects are not yet handled. * libio/libio.h (_IO_cookie_io_functions_t): Move to C++ protected place. * po/es.po: Update. * po/fr.po: Update. * po/nl.po: Update. * time/Makefile: Better cross-compile support. Avoid test which cannot be run. (CFLAGS-tzset.c): New variable. Overwrite TZDEFAULT value from tzfile.h file. * time/tzfile.c (__tzfile_read): Allow TZDEFAULT start with '/' even in SUID programs. * time/tzset.c (__tzset_internal): If TZ envvar is not set use same default values as in tzfile.c. * elf/dynamic-link.h (elf_get_dynamic_info): Recognize versioning tags. * elf/link.h: Likewise. * elf/elf.h: Add tag definitions and data structures for versioning. 1997-02-03 02:17 Ulrich Drepper <drepper@cygnus.com> * nis/rpcsvc/yp.x (struct ypresp_key_val): There is not stupid "Sun bug". This is the order of elements also used by 4.4BSD. * nis/rpcsvc/yp.h: Likewise. Reported by HJ Lu. 1997-02-02 12:13 H.J. Lu <hjl@gnu.ai.mit.edu> * sunrpc/Makefile ($(objpfx)x%.h, $(objpfx)x%.c): Add "@:" as action. * Makefile (install): Pass installation directories as arguments to ldconfig. 1997-02-02 23:15 Ulrich Drepper <drepper@cygnus.com> * malloc/malloc.c (__after_morecore_hook): New variable. (malloc_extend_top): Call __after_morecore_hook if set. (main_trim): Likewise. * malloc/malloc.h: Add declaration of __after_morecore_hook. Suggested by Marcus Daniels. 1997-02-02 23:00 Marcus G. Daniels <marcus@tdb.com> * malloc/malloc.c (rEALLOc): Protect tsd_setspecific call by #ifndef NO_THREADS. (mallinfo): Likewise. * malloc/malloc.c (__morecore): Make external since it is used in programs. 1997-02-02 15:10 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/statbuf.h (struct stat): Make st_dev field unsigned. 1997-02-01 23:36 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/stxncpy.S ($unaligned) [src % 8 > dst % 8]: Don't use t6 as a temporary; it contains bits we still need in $u_head. 1997-01-31 15:05 John Bowman <bowman@ipp-garching.mpg.de> * sysdeps/i386/fpu/__math.h [__USE_MISC]: Don't declare prototypes using __ prefix. Add prototype for log1p.
Diffstat (limited to 'time')
-rw-r--r-- | time/Makefile | 16 | ||||
-rw-r--r-- | time/tzfile.c | 24 | ||||
-rw-r--r-- | time/tzset.c | 14 |
3 files changed, 34 insertions, 20 deletions
diff --git a/time/Makefile b/time/Makefile index b994eee1ac..08a19a1838 100644 --- a/time/Makefile +++ b/time/Makefile @@ -35,11 +35,7 @@ routines := offtime asctime clock ctime ctime_r difftime \ strptime others := ap zdump zic -tests := test_time clocktest test-tz - -# Before the test-tz test can be run we need the data to be installed. -tests: install-test-data - +tests := test_time clocktest tzfiles := africa antarctica asia australasia europe northamerica \ southamerica etcetera factory systemv backward \ @@ -56,6 +52,15 @@ all: # Make this the default target; it will be defined in Rules. include ../Makeconfig # Get objpfx defined so we can use it below. +ifeq (no,$(cross-compiling)) +# We can run the test-tz test only if we can install the test data using +# zic. This isn't possible when cross-compiling. +tests += test-tz + +# Before the test-tz test can be run we need the data to be installed. +tests: install-test-data +endif + # z.* use this variable. define nl @@ -158,6 +163,7 @@ CFLAGS-zic.c = -Wno-strict-prototypes -DNOID $(tz-cflags) CFLAGS-ialloc.c = -Wno-strict-prototypes -DNOID CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID CFLAGS-tzfile.c = $(tz-cflags) +CFLAGS-tzset.c = $(tz-cflags) # We have to make sure the data for testing the tz functions is available. .PHONY: install-test-data diff --git a/time/tzfile.c b/time/tzfile.c index ed7b0932f3..e063d5d04f 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -112,17 +112,19 @@ __tzfile_read (const char *file) else if (*file == '\0') /* User specified the empty string; use UTC explicitly. */ file = "Universal"; - - /* We must not allow to read an arbitrary file in a setuid program. - So we fail for any file which is not in the directory hierachy - starting at TZDIR. */ - if (__libc_enable_secure - && ((*file == '/' - && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1) != 0) - || strstr (file, "../") != NULL)) - /* This test a certainly a bit too restrictive but it should catch all - critical case. */ - return; + else + { + /* We must not allow to read an arbitrary file in a setuid + program. So we fail for any file which is not in the + directory hierachy starting at TZDIR. */ + if (__libc_enable_secure + && ((*file == '/' + && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1)) + || strstr (file, "../") != NULL)) + /* This test a certainly a bit too restrictive but it should + catch all critical case. */ + return; + } if (*file != '/') { diff --git a/time/tzset.c b/time/tzset.c index 87dc6d6337..05760b2c62 100644 --- a/time/tzset.c +++ b/time/tzset.c @@ -94,6 +94,12 @@ __tzset_internal (always) /* Examine the TZ environment variable. */ tz = getenv ("TZ"); + if (tz == NULL) + /* No user specification; use the site-wide default. */ + tz = TZDEFAULT; + else if (*tz == '\0') + /* User specified the empty string; use UTC explicitly. */ + tz = "Universal"; /* A leading colon means "implementation defined syntax". We ignore the colon and always use the same algorithm: @@ -108,10 +114,10 @@ __tzset_internal (always) /* Free old storage. */ if (tz_rules[0].name != NULL && *tz_rules[0].name != '\0') - free((void *) tz_rules[0].name); + free ((void *) tz_rules[0].name); if (tz_rules[1].name != NULL && *tz_rules[1].name != '\0' && tz_rules[1].name != tz_rules[0].name) - free((void *) tz_rules[1].name); + free ((void *) tz_rules[1].name); tz_rules[0].name = NULL; tz_rules[1].name = NULL; @@ -163,7 +169,7 @@ __tzset_internal (always) return; } - if (sscanf(tz, "%[^0-9,+-]", tz_rules[0].name) != 1 || + if (sscanf (tz, "%[^0-9,+-]", tz_rules[0].name) != 1 || (l = strlen(tz_rules[0].name)) < 3) { free (tz_rules[0].name); @@ -180,7 +186,7 @@ __tzset_internal (always) tz += l; /* Figure out the standard offset from UTC. */ - if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit(*tz))) + if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz))) return; if (*tz == '-' || *tz == '+') |