Thread (5 messages) flat view 5 messages, 2 authors, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help