Module Name: src
Committed By: christos
Date: Sun Dec 12 17:30:23 UTC 2010
Modified Files:
src/bin/date: date.c
Log Message:
check return value of localtime.
To generate a diff of this commit:
cvs rdiff -u -r1.56 -r1.57 src/bin/date/date.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/bin/date/date.c
diff -u src/bin/date/date.c:1.56 src/bin/date/date.c:1.57
--- src/bin/date/date.c:1.56 Sat Dec 11 11:57:51 2010
+++ src/bin/date/date.c Sun Dec 12 12:30:23 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: date.c,v 1.56 2010/12/11 16:57:51 christos Exp $ */
+/* $NetBSD: date.c,v 1.57 2010/12/12 17:30:23 christos Exp $ */
/*
* Copyright (c) 1985, 1987, 1988, 1993
@@ -40,7 +40,7 @@
#if 0
static char sccsid[] = "@(#)date.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: date.c,v 1.56 2010/12/11 16:57:51 christos Exp $");
+__RCSID("$NetBSD: date.c,v 1.57 2010/12/12 17:30:23 christos Exp $");
#endif
#endif /* not lint */
@@ -80,6 +80,7 @@
const char *format;
int ch;
long long val;
+ struct tm *tm;
setprogname(argv[0]);
(void)setlocale(LC_ALL, "");
@@ -145,10 +146,15 @@
if ((buf = malloc(bufsiz = 1024)) == NULL)
goto bad;
- while (strftime(buf, bufsiz, format, localtime(&tval)) == 0)
+
+ if ((tm = localtime(&tval)) == NULL)
+ err(EXIT_FAILURE, "localtime %lld failed", (long long)tval);
+
+ while (strftime(buf, bufsiz, format, tm) == 0)
if ((buf = realloc(buf, bufsiz <<= 1)) == NULL)
goto bad;
- (void)printf("%s\n", buf+1);
+
+ (void)printf("%s\n", buf + 1);
free(buf);
return 0;
bad:
@@ -198,7 +204,8 @@
badformat();
}
- lt = localtime(&tval);
+ if ((lt = localtime(&tval)) == NULL)
+ err(EXIT_FAILURE, "localtime %lld failed", (long long)tval);
lt->tm_isdst = -1; /* Divine correct DST */