# [PATCH 1/1] Fix unsigned time_t comparison

3 messages from 2013-02-25 to 2013-02-25. Participants: Mike Gorchak, Junio C Hamano.
Thread: https://gitlist.dev/t/33012

## Mike Gorchak, 2013-02-25 21:51

Subject: [PATCH 1/1] Fix unsigned time_t comparison
Message-ID: <CAHXAxrMZODO07_dPep-yKgrzD1228iSMGUXX06xkKDmoZF4+qA@mail.gmail.com>
URL: https://gitlist.dev/e/CAHXAxrMZODO07_dPep-yKgrzD1228iSMGUXX06xkKDmoZF4%2BqA%40mail.gmail.com

```
Do not compare time_t (less comparison) with -1. If time_t
is unsigned this leads to always true comparison.

Signed-off-by: Mike Gorchak <mike.gorchak.qnx@gmail.com>
---
 date.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/date.c b/date.c
index 57331ed..1ac28e5 100644
--- a/date.c
+++ b/date.c
@@ -383,7 +383,7 @@ static int is_date(int year, int month, int day,
struct tm *now_tm, time_t now,
 		 * sense to specify timestamp way into the future.  Make
 		 * sure it is not later than ten days from now...
 		 */
-		if (now + 10*24*3600 < specified)
+		if ((specified != -1) && (now + 10*24*3600 < specified))
 			return 0;
 		tm->tm_mon = r->tm_mon;
 		tm->tm_mday = r->tm_mday;
-- 
1.8.2-rc0

```

## Junio C Hamano, 2013-02-25 22:10

Subject: Re: [PATCH 1/1] Fix unsigned time_t comparison
Message-ID: <7vvc9gnixb.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vvc9gnixb.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CAHXAxrMZODO07_dPep-yKgrzD1228iSMGUXX06xkKDmoZF4+qA@mail.gmail.com>

```
Mike Gorchak <mike.gorchak.qnx@gmail.com> writes:

> Do not compare time_t (less comparison) with -1. If time_t
> is unsigned this leads to always true comparison.
>
> Signed-off-by: Mike Gorchak <mike.gorchak.qnx@gmail.com>
> ---
>  date.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/date.c b/date.c
> index 57331ed..1ac28e5 100644
> --- a/date.c
> +++ b/date.c
> @@ -383,7 +383,7 @@ static int is_date(int year, int month, int day,
> struct tm *now_tm, time_t now,
>  		 * sense to specify timestamp way into the future.  Make
>  		 * sure it is not later than ten days from now...
>  		 */
> -		if (now + 10*24*3600 < specified)
> +		if ((specified != -1) && (now + 10*24*3600 < specified))
>  			return 0;
>  		tm->tm_mon = r->tm_mon;
>  		tm->tm_mday = r->tm_mday;

This is good enough band-aid for now (as it won't change the
semantics for anybody), but I suspect in the longer term we would
want to pick a different mechanims to signal errors, so that we can
specify timestamp that is before 1970.

Thanks, will queue.

```

## Junio C Hamano, 2013-02-25 22:27

Subject: Re: [PATCH 1/1] Fix unsigned time_t comparison
Message-ID: <7vmwusni51.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vmwusni51.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CAHXAxrMZODO07_dPep-yKgrzD1228iSMGUXX06xkKDmoZF4+qA@mail.gmail.com>

```
Mike Gorchak <mike.gorchak.qnx@gmail.com> writes:

> Do not compare time_t (less comparison) with -1. If time_t
> is unsigned this leads to always true comparison.
>
> Signed-off-by: Mike Gorchak <mike.gorchak.qnx@gmail.com>
> ---
>  date.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/date.c b/date.c
> index 57331ed..1ac28e5 100644
> --- a/date.c
> +++ b/date.c
> @@ -383,7 +383,7 @@ static int is_date(int year, int month, int day,
> struct tm *now_tm, time_t now,

Line-wrapped.  Will manually fix while applying.

Thanks.

>  		 * sense to specify timestamp way into the future.  Make
>  		 * sure it is not later than ten days from now...
>  		 */
> -		if (now + 10*24*3600 < specified)
> +		if ((specified != -1) && (now + 10*24*3600 < specified))
>  			return 0;
>  		tm->tm_mon = r->tm_mon;
>  		tm->tm_mday = r->tm_mday;

```
