From: Nguyen Thai Ngoc Duy Date: Thu, 03 Nov 2011 23:37:12 GMT Subject: Re: git rev-parse --since=1970-01-01 does not work reliably Message-ID: In-Reply-To: <20111031231320.GA3857@do> 2011/11/1 Nguyen Thai Ngoc Duy : > 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? > Signed-off-by: Nguyễn Thái Ngọc Duy > --- >  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