summaryrefslogtreecommitdiff
path: root/date.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-02-24 07:49:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-02-24 18:12:58 (GMT)
commit2b15846dbfb31df10a69a4d56ae944a01563bc07 (patch)
tree22f680d01100b90ecec09f40d7f442d11d89024f /date.c
parent1dca155fe3fac29e847d2d8ff1087d892a129a9c (diff)
downloadgit-2b15846dbfb31df10a69a4d56ae944a01563bc07.zip
git-2b15846dbfb31df10a69a4d56ae944a01563bc07.tar.gz
git-2b15846dbfb31df10a69a4d56ae944a01563bc07.tar.bz2
log: do not segfault on gmtime errors
Many code paths assume that show_date and show_ident_date cannot return NULL. For the most part, we handle missing or corrupt timestamps by showing the epoch time t=0. However, we might still return NULL if gmtime rejects the time_t we feed it, resulting in a segfault. Let's catch this case and just format t=0. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'date.c')
-rw-r--r--date.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/date.c b/date.c
index 2dae471..f64bbeb 100644
--- a/date.c
+++ b/date.c
@@ -184,8 +184,10 @@ const char *show_date(unsigned long time, int tz, enum date_mode mode)
tz = local_tzoffset(time);
tm = time_to_tm(time, tz);
- if (!tm)
- return NULL;
+ if (!tm) {
+ tm = time_to_tm(0, 0);
+ tz = 0;
+ }
strbuf_reset(&timebuf);
if (mode == DATE_SHORT)