Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowi@redhat.com>2015-03-26 00:26:07 +0300
committerYaakov Selkowitz <yselkowi@redhat.com>2015-03-31 00:06:48 +0300
commit84304a44b1b24404d7faa714dc9d9d7accd464be (patch)
tree88344ea73b17c82296bdcfa066fd6467d707f011 /newlib
parent1f9716e16068ef55a3776952dca9697a6949e14d (diff)
strftime: use tzname if TM_ZONE is NULL
This avoids a strlen(NULL) crash a few lines later. * libc/time/strftime.c (strftime) <%Z>: Initialize tznam to NULL. Use _tzname as fallback if TM_ZONE is NULL.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/time/strftime.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 7c57c94cd..6e45e940b 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,5 +1,10 @@
2015-03-30 Yaakov Selkowitz <yselkowi@redhat.com>
+ * libc/time/strftime.c (strftime) <%Z>: Initialize tznam to NULL.
+ Use _tzname as fallback if TM_ZONE is NULL.
+
+2015-03-30 Yaakov Selkowitz <yselkowi@redhat.com>
+
* libc/include/libgen.h (_BASENAME_DEFINED): Define.
* libc/include/string.h (basename): Declare.
* libc/string/Makefile.am (ELIX_4_SOURCES): Add gnu_basename.c.
diff --git a/newlib/libc/time/strftime.c b/newlib/libc/time/strftime.c
index 7db338364..ee604c2e4 100644
--- a/newlib/libc/time/strftime.c
+++ b/newlib/libc/time/strftime.c
@@ -1311,7 +1311,7 @@ recurse:
if (tim_p->tm_isdst >= 0)
{
size_t size;
- const char *tznam;
+ const char *tznam = NULL;
TZ_LOCK;
#if defined (__CYGWIN__)
@@ -1320,9 +1320,9 @@ recurse:
tznam = __cygwin_gettzname (tim_p);
#elif defined (__TM_ZONE)
tznam = tim_p->__TM_ZONE;
-#else
- tznam = _tzname[tim_p->tm_isdst > 0];
#endif
+ if (!tznam)
+ tznam = _tzname[tim_p->tm_isdst > 0];
/* Note that in case of wcsftime this loop only works for
timezone abbreviations using the portable codeset (aka ASCII).
This seems to be the case, but if that ever changes, this