parsedate.c: fix the return code for an overflow edge condition
This commit is contained in:
Родитель
0e452a02f1
Коммит
5b37db44a3
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче