Re: git rev-parse --since=1970-01-01 does not work reliably
From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:52:22
2011/11/1 Nguyen Thai Ngoc Duy [off-list ref]:
Subject: [PATCH] Do not accept negative time_t We use unsigned long internally to present time, negative value just breaks thing.
Junio, what do you think about this patch?
quoted hunk ↗ jump to hunk
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- date.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)diff --git a/date.c b/date.c index 353e0a5..9cbd521 100644 --- a/date.c +++ b/date.c@@ -653,8 +653,12 @@ int parse_date_basic(const char *date, unsigned long *timestamp, int *offset)if (*timestamp == -1) return -1; - if (!tm_gmt) + if (!tm_gmt) { + if ((time_t)*timestamp < (time_t)*offset * 60) + die("unsupported time before Epoch"); *timestamp -= *offset * 60; + } + return 0; /* success */ }@@ -722,6 +726,8 @@ static unsigned long update_tm(struct tm *tm, struct tm *now, unsigned long sec)n = mktime(tm) - sec; localtime_r(&n, tm); + if (n < 0) + die("unsupported time before Epoch"); return n; } -- 1.7.4.74.g639db -- 8< --
-- Duy