summaryrefslogtreecommitdiff
path: root/libc/stdtime/asctime.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdtime/asctime.c')
-rw-r--r--libc/stdtime/asctime.c13
1 files changed, 8 insertions, 5 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 */