SHA256
3
0
forked from pool/glibc
glibc/tzset-tzname.patch
Andreas Schwab 5f9962d8aa Accepting request 345159 from home:Andreas_Schwab:Factory
- resolv-mem-leak.patch: Fix resource leak in resolver (BZ #19257)
- tzset-tzname.patch: Force rereading TZDEFRULES after it was used to set
  DST rules only (BZ #19253)

- glibc-2.3.90-noversion.diff: use stat64

- ld-pointer-guard.patch: Always enable pointer guard (bsc#950944, BZ
  #18928)

OBS-URL: https://build.opensuse.org/request/show/345159
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=419
2015-11-19 09:31:48 +00:00

134 lines
4.6 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Force rereading TZDEFRULES after it was used to set DST rules only (bug #19253)
If the TZDEFRULES file was used to set the DST rules when $TZ didn't
provide any we need to make sure that the next time it is used we
recompute everything as __tzfile_default changes some setting from what is
provided by TZDEFRULES.
[BZ #19253]
* time/tzfile.c (__tzfile_default): Invalidate tzfile attribute
cache when TZDEFRULES was used.
* time/tst-tzname.c: New file.
* time/Makefile (test): Add tst-tzname.
(tst-tzname-ENV, CFLAGS-tst-tzname.c): Define.
* timezone/Makefile (test-zones): Add $(posixrules-file).
($(testdata)/$(posixrules-file)): New rule.
Index: glibc-2.22/time/Makefile
===================================================================
--- glibc-2.22.orig/time/Makefile
+++ glibc-2.22/time/Makefile
@@ -37,7 +37,8 @@ aux := era alt_digit lc-time-cleanup
tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \
tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \
- tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime
+ tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \
+ tst-tzname
include ../Rules
@@ -55,4 +56,7 @@ CFLAGS-test_time.c = -Wno-format
tst-getdate-ENV= DATEMSK=datemsk TZDIR=${common-objpfx}timezone/testdata
test_time-ARGS= EST5EDT CST
+tst-tzname-ENV = TZDIR=${common-objpfx}timezone/testdata
+CFLAGS-tst-tzname.c = -DTZDEFRULES='"$(posixrules-file)"'
+
bug-getdate1-ARGS = ${objpfx}bug-getdate1-fmt
Index: glibc-2.22/time/tst-tzname.c
===================================================================
--- /dev/null
+++ glibc-2.22/time/tst-tzname.c
@@ -0,0 +1,50 @@
+/* Test that tzset sets tzname correctly (BZ #19253).
+ Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+static int
+do_test (void)
+{
+ int result = 0;
+
+ setenv ("TZ", TZDEFRULES, 1);
+ tzset ();
+ const char *stdtz = strdup (tzname[0]);
+ setenv ("TZ", "STD-1DST", 1);
+ tzset ();
+ if (strcmp (tzname[0], "STD") != 0)
+ {
+ printf ("FAIL: TZ=STD-1DST, tzname[0] = %s\n", tzname[0]);
+ result = 1;
+ }
+ setenv ("TZ", TZDEFRULES, 1);
+ tzset ();
+ if (strcmp (tzname[0], stdtz) != 0)
+ {
+ printf ("FAIL: TZ=%s, tzname[0] = %s\n", TZDEFRULES, tzname[0]);
+ result = 1;
+ }
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
Index: glibc-2.22/time/tzfile.c
===================================================================
--- glibc-2.22.orig/time/tzfile.c
+++ glibc-2.22/time/tzfile.c
@@ -628,6 +628,12 @@ __tzfile_default (const char *std, const
__timezone = -types[0].offset;
compute_tzname_max (stdlen + dstlen);
+
+ /* Invalidate the tzfile attribute cache to force rereading
+ TZDEFRULES the next time it is used. */
+ tzfile_dev = 0;
+ tzfile_ino = 0;
+ tzfile_mtime = 0;
}
void
Index: glibc-2.22/timezone/Makefile
===================================================================
--- glibc-2.22.orig/timezone/Makefile
+++ glibc-2.22/timezone/Makefile
@@ -49,7 +49,8 @@ ifeq ($(run-built-tests),yes)
# List zones generated by separate commands running zic on the host.
# Each such zic run counts as a separate test.
test-zones := America/New_York Etc/UTC UTC Europe/Berlin \
- Australia/Melbourne America/Sao_Paulo Asia/Tokyo
+ Australia/Melbourne America/Sao_Paulo Asia/Tokyo \
+ $(posixrules-file)
tests-special += $(addprefix $(testdata)/, $(test-zones))
endif
@@ -101,6 +102,8 @@ zic-deps = $(objpfx)zic $(leapseconds) y
$(testdata)/America/New_York: northamerica $(zic-deps)
$(build-testdata)
+$(testdata)/$(posixrules-file): $(testdata)/America/New_York
+ $(make-link); $(evaluate-test)
$(testdata)/Etc/UTC: etcetera $(zic-deps)
$(build-testdata)
# Use a pattern rule to indicate the command produces both targets at once.