summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2017-04-07 14:33:29 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2017-04-07 14:33:29 +0200
commit54dc00cbd2d28239a345a948269b277a4f4aab13 (patch)
tree3242ca7e5afd59410c4ea6f3800a1eacf73afd45
parent5ec7e6442f92a75f1d987739174e22394d373de8 (diff)
downloadgnutls-54dc00cbd2d28239a345a948269b277a4f4aab13.tar.gz
x509/time: reject invalid dates in local mktime()
Resolves #135 Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r--lib/x509/time.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/x509/time.c b/lib/x509/time.c
index 39f47a85f3..4d2b789268 100644
--- a/lib/x509/time.c
+++ b/lib/x509/time.c
@@ -85,6 +85,10 @@ static time_t mktime_utc(const struct fake_tm *tm)
if (tm->tm_mon < 0 || tm->tm_mon > 11 || tm->tm_year < 1970)
return (time_t) - 1;
+ /* Check for "obvious" mistakes in dates */
+ if (tm->tm_sec > 60 || tm->tm_min > 59 || tm->tm_mday > 31 || tm->tm_mday < 1 || tm->tm_hour > 23)
+ return (time_t) - 1;
+
/* Convert to a time_t.
*/
for (i = 1970; i < tm->tm_year; i++)