summaryrefslogtreecommitdiff
path: root/lib/http.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-11-28 15:27:58 +0100
committerDaniel Stenberg <daniel@haxx.se>2019-11-29 11:01:24 +0100
commit0044443a020d15c262e9f6c724b29365a8148437 (patch)
treef345ffb8bf4a275caa823b758ccac35bbf6f3526 /lib/http.c
parentbc64377ff8386d4f809806b6286f43e5aff19922 (diff)
downloadcurl-0044443a020d15c262e9f6c724b29365a8148437.tar.gz
parsedate: offer a getdate_capped() alternative
... and use internally. This function will return TIME_T_MAX instead of failure if the parsed data is found to be larger than what can be represented. TIME_T_MAX being the largest value curl can represent. Reviewed-by: Daniel Gustafsson Reported-by: JanB on github Fixes #4152 Closes #4651
Diffstat (limited to 'lib/http.c')
-rw-r--r--lib/http.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/http.c b/lib/http.c
index e344663d0..885704560 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -3974,7 +3974,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
else if(checkprefix("Retry-After:", k->p)) {
/* Retry-After = HTTP-date / delay-seconds */
curl_off_t retry_after = 0; /* zero for unknown or "now" */
- time_t date = curl_getdate(&k->p[12], NULL);
+ time_t date = Curl_getdate_capped(&k->p[12]);
if(-1 == date) {
/* not a date, try it as a decimal number */
(void)curlx_strtoofft(&k->p[12], NULL, 10, &retry_after);
@@ -4032,9 +4032,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
#endif
else if(!k->http_bodyless && checkprefix("Last-Modified:", k->p) &&
(data->set.timecondition || data->set.get_filetime) ) {
- time_t secs = time(NULL);
- k->timeofdoc = curl_getdate(k->p + strlen("Last-Modified:"),
- &secs);
+ k->timeofdoc = Curl_getdate_capped(k->p + strlen("Last-Modified:"));
if(data->set.get_filetime)
data->info.filetime = k->timeofdoc;
}