aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-09-27 16:54:02 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-09-27 16:54:02 +0200
commit4d58f97f604bfef5b2cb7538f9bbc925c141622f (patch)
tree727e59deebfbb18e848e1856b68ef293e3e2ad38
parent33c3bb057b0814f4738bf055f7a153731a9f2352 (diff)
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
-rw-r--r--lib/parsedate.c6
-rw-r--r--tests/data/test5171
-rw-r--r--tests/libtest/lib517.c2
3 files changed, 9 insertions, 0 deletions
diff --git a/lib/parsedate.c b/lib/parsedate.c
index 26f7d84ce..5d8af2692 100644
--- a/lib/parsedate.c
+++ b/lib/parsedate.c
@@ -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);
diff --git a/tests/data/test517 b/tests/data/test517
index 04aa6a089..d7b91842c 100644
--- a/tests/data/test517
+++ b/tests/data/test517
@@ -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 =>
diff --git a/tests/libtest/lib517.c b/tests/libtest/lib517.c
index 3f7b064ab..38a65d30b 100644
--- a/tests/libtest/lib517.c
+++ b/tests/libtest/lib517.c
@@ -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
};