aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Groothuis <edwin@FreeBSD.org>2010-02-17 11:18:24 +0000
committerEdwin Groothuis <edwin@FreeBSD.org>2010-02-17 11:18:24 +0000
commit922ba8695f9afa9d07b21a861536528d84685941 (patch)
tree0651309ba5df24ab03c73f2b8948376df5ef690f
parent77566d4b374e823f866d8adce69b12ee74a1de1a (diff)
downloadsrc-922ba8695f9afa9d07b21a861536528d84685941.tar.gz
src-922ba8695f9afa9d07b21a861536528d84685941.zip
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.c13
-rw-r--r--libc/stdtime/localtime.c15
-rw-r--r--unused/tz-art.htm7
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.