diff options
author | Edwin Groothuis <edwin@FreeBSD.org> | 2010-02-17 11:18:24 +0000 |
---|---|---|
committer | Edwin Groothuis <edwin@FreeBSD.org> | 2010-02-17 11:18:24 +0000 |
commit | 922ba8695f9afa9d07b21a861536528d84685941 (patch) | |
tree | 0651309ba5df24ab03c73f2b8948376df5ef690f | |
parent | 77566d4b374e823f866d8adce69b12ee74a1de1a (diff) |
Vendor import of tzcode2010a:vendor/tzcode/tzcode2010a
* asctime.c - Set errno to EINVAL and return
"??? ??? ?? ??:??:?? ????\n"
if asctime_r is called with a NULL struct tm pointer.
(Note that asctime_r is called by ctime_r and asctime;
asctime is called by ctime.)
* localtime.c - Set errno to EINVAL and return WRONG
if time1 is called with a NULL struct tm pointer;
avoid dereference if a NULL struct tm pointer is
passed to timelocal, timegm, or timeoff.
(Note that time1 is called by mktime,
timegm, and timeoff; mktime is called by timelocal.)
Obtained from: ftp://elsie.nci.nih.gov/pub/
Notes
Notes:
svn path=/vendor/tzcode/dist/; revision=204001
svn path=/vendor/tzcode/tzcode2010a/; revision=204002; tag=vendor/tzcode/tzcode2010a
-rw-r--r-- | libc/stdtime/asctime.c | 13 | ||||
-rw-r--r-- | libc/stdtime/localtime.c | 15 | ||||
-rw-r--r-- | unused/tz-art.htm | 7 |
3 files changed, 25 insertions, 10 deletions
diff --git a/libc/stdtime/asctime.c b/libc/stdtime/asctime.c index e0804f16f4dd..52586c6aedf2 100644 --- a/libc/stdtime/asctime.c +++ b/libc/stdtime/asctime.c @@ -11,7 +11,7 @@ #ifndef lint #ifndef NOID -static char elsieid[] = "@(#)asctime.c 8.2"; +static char elsieid[] = "@(#)asctime.c 8.5"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -91,6 +91,10 @@ char * buf; char year[INT_STRLEN_MAXIMUM(int) + 2]; char result[MAX_ASCTIME_BUF_SIZE]; + if (timeptr == NULL) { + errno = EINVAL; + return strcpy(buf, "??? ??? ?? ??:??:?? ????\n"); + } if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK) wn = "???"; else wn = wday_name[timeptr->tm_wday]; @@ -113,10 +117,9 @@ char * buf; timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, year); - if (strlen(result) < STD_ASCTIME_BUF_SIZE || buf == buf_asctime) { - (void) strcpy(buf, result); - return buf; - } else { + if (strlen(result) < STD_ASCTIME_BUF_SIZE || buf == buf_asctime) + return strcpy(buf, result); + else { #ifdef EOVERFLOW errno = EOVERFLOW; #else /* !defined EOVERFLOW */ diff --git a/libc/stdtime/localtime.c b/libc/stdtime/localtime.c index d186080bf351..255ff4828a52 100644 --- a/libc/stdtime/localtime.c +++ b/libc/stdtime/localtime.c @@ -5,7 +5,7 @@ #ifndef lint #ifndef NOID -static char elsieid[] = "@(#)localtime.c 8.9"; +static char elsieid[] = "@(#)localtime.c 8.10"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -1889,6 +1889,10 @@ const long offset; int types[TZ_MAX_TYPES]; int okay; + if (tmp == NULL) { + errno = EINVAL; + return WRONG; + } if (tmp->tm_isdst > 1) tmp->tm_isdst = 1; t = time2(tmp, funcp, offset, &okay); @@ -1960,7 +1964,8 @@ time_t timelocal(tmp) struct tm * const tmp; { - tmp->tm_isdst = -1; /* in case it wasn't initialized */ + if (tmp != NULL) + tmp->tm_isdst = -1; /* in case it wasn't initialized */ return mktime(tmp); } @@ -1968,7 +1973,8 @@ time_t timegm(tmp) struct tm * const tmp; { - tmp->tm_isdst = 0; + if (tmp != NULL) + tmp->tm_isdst = 0; return time1(tmp, gmtsub, 0L); } @@ -1977,7 +1983,8 @@ timeoff(tmp, offset) struct tm * const tmp; const long offset; { - tmp->tm_isdst = 0; + if (tmp != NULL) + tmp->tm_isdst = 0; return time1(tmp, gmtsub, offset); } diff --git a/unused/tz-art.htm b/unused/tz-art.htm index a3a9eedc0b91..49df2ffa8b34 100644 --- a/unused/tz-art.htm +++ b/unused/tz-art.htm @@ -9,7 +9,7 @@ PUBLIC "-//W3C//DTD HTML 4.01//EN" <body> <h1>Time and the Arts</h1> <address> -@(#)tz-art.htm 8.15 +@(#)tz-art.htm 8.16 </address> <p> This file is in the public domain, so clarified as of @@ -366,6 +366,11 @@ premonition in the "We Had a Dream" episode of "Medium" (originally aired 2007-02-28). </li> <li> +In the "30 Rock" episode "Anna Howard Shaw Day" (first broadcast 2010-02-11), +Jack Donaghy's date realizes that a Geneva-to-New-York business phone call +received in the evening must be fake given the difference in local times. +</li> +<li> In the 1946 movie "A Matter of Life and Death" (U.S. title "Stairway to Heaven") there is a reference to British Double Summer Time. |