From b2aeef577778ce61eb85f13001fd1cc8faa41176 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Sat, 4 May 2024 17:44:05 -0500 Subject: [PATCH] Prevent integer div by 0 in curl progress callback If the curl callback is called at the exact same time as the download begins, this callback would cause an integer division by zero. --- src/d_netfil.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/d_netfil.c b/src/d_netfil.c index 505a2fefd..d7611b31e 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -1787,12 +1787,25 @@ size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream) int curlprogress_callback(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) { + time_t curtime; + (void)clientp; (void)ultotal; (void)ulnow; // Function prototype requires these but we won't use, so just discard + + curtime = time(NULL); + curl_dlnow = dlnow; curl_dltotal = dltotal; - getbytes = curl_dlnow / (time(NULL) - curl_starttime); // To-do: Make this more accurate??? + + if (curtime > curl_starttime) + { + getbytes = curl_dlnow / (curtime - curl_starttime); // To-do: Make this more accurate??? + } + else + { + getbytes = 0; + } return 0; }