Commit 57d51be6 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

parsedate: detect more invalid dates better

parent 8da5da9b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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;
+5 −0
Original line number Diff line number Diff line
@@ -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 =>
+5 −1
Original line number Diff line number Diff line
@@ -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
};