parsedate: allow time specified without seconds

The date format in RFC822 allows that the seconds part of HH:MM:SS is
left out, but this function didn't allow it. This change also includes a
modified test case that makes sure that this now works.

Reported by: Matt Ford
Bug: http://curl.haxx.se/bug/view.cgi?id=3076529
This commit is contained in:
Daniel Stenberg 2010-09-27 16:54:02 +02:00
parent 33c3bb057b
commit 4d58f97f60
3 changed files with 9 additions and 0 deletions

View File

@ -371,6 +371,12 @@ int Curl_parsedate(const char *date, time_t *output)
/* time stamp! */
date += 8;
}
else if((secnum == -1) &&
(2 == sscanf(date, "%02d:%02d", &hournum, &minnum))) {
/* time stamp without seconds */
date += 5;
secnum = 0;
}
else {
val = (int)strtol(date, &end, 10);

View File

@ -103,6 +103,7 @@ nothing
74: Thu, 999999999999-Aug-2007 20:49:07 GMT => -1
75: Thu, 12-Aug-2007 20:61:99999999999 GMT => -1
76: IAintNoDateFool => -1
77: Thu Apr 18 22:50 2007 GMT => 1176936600
</stdout>
# This test case previously testes an overflow case ("2094 Nov 6 =>

View File

@ -97,6 +97,8 @@ static const char *dates[]={
"Thu, 999999999999-Aug-2007 20:49:07 GMT",
"Thu, 12-Aug-2007 20:61:99999999999 GMT",
"IAintNoDateFool",
"Thu Apr 18 22:50 2007 GMT", /* without seconds */
NULL
};