threads / patch / 33012

patchFix unsigned time_t comparison

Subject: [PATCH 1/1] Fix unsigned time_t comparison

## tl;dr

3 messages between Feb 25, 2013 and Feb 25, 2013. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Mike Gorchak· Feb 25, 2013, 21:51 UTC · lore

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(-)
Show changes to date.c +1 −1
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· Feb 25, 2013, 22:10 UTC · re: Mike Gorchak · lore

Re: [PATCH 1/1] Fix unsigned time_t comparison

Mike Gorchak <mike.gorchak.qnx@gmail.com> writes:
Show 22 quoted lines
> 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· Feb 25, 2013, 22:27 UTC · re: Mike Gorchak · lore

Re: [PATCH 1/1] Fix unsigned time_t comparison

Mike Gorchak <mike.gorchak.qnx@gmail.com> writes:
Show 14 quoted lines
> 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.
Show 8 quoted lines
>  		 * 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;

← back to recent threads