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>
This commit is contained in:
Jeff King
2014-02-24 02:49:05 -05:00
committed by Junio C Hamano
parent 1dca155fe3
commit 2b15846dbf
2 changed files with 12 additions and 2 deletions

6
date.c
View File

@ -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)