[PATCH 1/1] Fix date checking in case if time was not initialized.
From: Mike Gorchak <hidden>
Date: 2016-06-15 22:56:15
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Mike Gorchak <hidden>
Date: 2016-06-15 22:56:15
Subsystem:
the rest · Maintainer:
Linus Torvalds
Fix is_date() function failings in detection of correct date in case if time was not properly initialized. From: Mike Gorchak <redacted> Signed-off-by: Mike Gorchak <redacted> --- date.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/date.c b/date.c
index 57331ed..ec758f4 100644
--- a/date.c
+++ b/date.c@@ -357,6 +357,7 @@ static int is_date(int year, int month, int day,struct tm *now_tm, time_t now,
if (month > 0 && month < 13 && day > 0 && day < 32) {
struct tm check = *tm;
struct tm *r = (now_tm ? &check : tm);
+ struct tm fixed_r;
time_t specified;
r->tm_mon = month - 1;@@ -377,7 +378,16 @@ static int is_date(int year, int month, int day,struct tm *now_tm, time_t now, if (!now_tm) return 1; - specified = tm_to_time_t(r); + /* Fix tm structure in case if time was not initialized */ + fixed_r = *r; + if (fixed_r.tm_hour==-1) + fixed_r.tm_hour=0; + if (fixed_r.tm_min==-1) + fixed_r.tm_min=0; + if (fixed_r.tm_sec==-1) + fixed_r.tm_sec=0; + + specified = tm_to_time_t(&fixed_r); /* Be it commit time or author time, it does not make * sense to specify timestamp way into the future. Make -- 1.8.2-rc0