parsedate: detect more invalid dates better

This commit is contained in:
Daniel Stenberg 2011-06-21 23:18:05 +02:00
parent 8da5da9b65
commit 57d51be60c
3 changed files with 14 additions and 1 deletions

View File

@ -485,6 +485,10 @@ static int parsedate(const char *date, time_t *output)
return PARSEDATE_SOONER;
}
if((mdaynum > 31) || (monnum > 11) ||
(hournum > 23) || (minnum > 59) || (secnum > 60))
return PARSEDATE_FAIL; /* clearly an illegal date */
tm.tm_sec = secnum;
tm.tm_min = minnum;
tm.tm_hour = hournum;

View File

@ -104,6 +104,11 @@ nothing
75: Thu, 12-Aug-2007 20:61:99999999999 GMT => -1
76: IAintNoDateFool => -1
77: Thu Apr 18 22:50 2007 GMT => 1176936600
78: 20110623 12:34:56 => 1308832496
79: 20110632 12:34:56 => -1
80: 20110623 56:34:56 => -1
81: 20111323 12:34:56 => -1
82: 20110623 12:34:79 => -1
</stdout>
# This test case previously testes an overflow case ("2094 Nov 6 =>

View File

@ -110,7 +110,11 @@ static const char *dates[]={
"Thu, 12-Aug-2007 20:61:99999999999 GMT",
"IAintNoDateFool",
"Thu Apr 18 22:50 2007 GMT", /* without seconds */
"20110623 12:34:56",
"20110632 12:34:56",
"20110623 56:34:56",
"20111323 12:34:56",
"20110623 12:34:79",
NULL
};