aboutsummaryrefslogtreecommitdiff
path: root/t/t4212-log-corrupt.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-02-24 02:49:05 -0500
committerJunio C Hamano <gitster@pobox.com>2014-02-24 10:12:58 -0800
commit2b15846dbfb31df10a69a4d56ae944a01563bc07 (patch)
tree22f680d01100b90ecec09f40d7f442d11d89024f /t/t4212-log-corrupt.sh
parent1dca155fe3fac29e847d2d8ff1087d892a129a9c (diff)
downloadgit-2b15846dbfb31df10a69a4d56ae944a01563bc07.tar.gz
git-2b15846dbfb31df10a69a4d56ae944a01563bc07.tar.xz
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-xt/t4212-log-corrupt.sh8
1 files changed, 8 insertions, 0 deletions
diff --git a/t/t4212-log-corrupt.sh b/t/t4212-log-corrupt.sh
index 80542d624..85c6df4ec 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