parsedate: detect more invalid dates better
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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 =>
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user