diff options
author | Jeff King <peff@peff.net> | 2014-02-24 08:49:05 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-02-24 19:12:58 +0100 |
commit | 2b15846dbfb31df10a69a4d56ae944a01563bc07 (patch) | |
tree | 22f680d01100b90ecec09f40d7f442d11d89024f /t/t4212-log-corrupt.sh | |
parent | log: handle integer overflow in timestamps (diff) | |
download | git-2b15846dbfb31df10a69a4d56ae944a01563bc07.tar.xz git-2b15846dbfb31df10a69a4d56ae944a01563bc07.zip |
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 't/t4212-log-corrupt.sh')
-rwxr-xr-x | t/t4212-log-corrupt.sh | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/t/t4212-log-corrupt.sh b/t/t4212-log-corrupt.sh index 80542d624b..85c6df4ec9 100755 --- a/t/t4212-log-corrupt.sh +++ b/t/t4212-log-corrupt.sh @@ -76,4 +76,12 @@ test_expect_success 'date parser recognizes time_t overflow' ' test_cmp expect actual ' +# date is within 2^63-1, but enough to choke glibc's gmtime +test_expect_success 'absurdly far-in-future dates produce sentinel' ' + commit=$(munge_author_date HEAD 999999999999999999) && + echo "Thu Jan 1 00:00:00 1970 +0000" >expect && + git log -1 --format=%ad $commit >actual && + test_cmp expect actual +' + test_done |