]> granicus.if.org Git - curl/commitdiff
parsedate.c: fix the return code for an overflow edge condition
authorDan Fandrich <dan@coneharvesters.com>
Tue, 5 Aug 2014 06:50:30 +0000 (08:50 +0200)
committerDan Fandrich <dan@coneharvesters.com>
Tue, 5 Aug 2014 07:25:47 +0000 (09:25 +0200)
lib/parsedate.c

index d7942f5542bde017dbf6746067b5f802b0494231..ecb8dfb426d2ebd90cc00de767963e635c378170 100644 (file)
@@ -530,8 +530,10 @@ static int parsedate(const char *date, time_t *output)
     /* Add the time zone diff between local time zone and GMT. */
     long delta = (long)(tzoff!=-1?tzoff:0);
 
-    if((delta>0) && (t > LONG_MAX  - delta))
-      return -1; /* time_t overflow */
+    if((delta>0) && (t > LONG_MAX - delta)) {
+      *output = 0x7fffffff;
+      return PARSEDATE_LATER; /* time_t overflow */
+    }
 
     t += delta;
   }
@@ -561,9 +563,6 @@ time_t curl_getdate(const char *p, const time_t *now)
  * Curl_gmtime() is a gmtime() replacement for portability. Do not use the
  * gmtime_r() or gmtime() functions anywhere else but here.
  *
- * To make sure no such function calls slip in, we define them to cause build
- * errors, which is why we use the name within parentheses in this function.
- *
  */
 
 CURLcode Curl_gmtime(time_t intime, struct tm *store)