]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
transfer: speed limiting fix for 32bit systems
authorStefan Eissing <stefan@eissing.org>
Fri, 26 Jul 2024 08:38:45 +0000 (10:38 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 26 Jul 2024 22:00:43 +0000 (00:00 +0200)
When checking if a speed limit on receives applies, compare the receive
sizes using the large int type to prevent an overflow on systems where
size_t is 32bit.

Fixes #14272
Reported-by: Mamoru Tasaka
Closes #14277

lib/transfer.c

index 8d21305ae4beef20d81fe055f8e8c3374a93009a..6c95a4719695de0276bb40d694f95877881dcd55 100644 (file)
@@ -281,13 +281,13 @@ static CURLcode readwrite_data(struct Curl_easy *data,
     buf = xfer_buf;
     bytestoread = xfer_blen;
 
-    if(bytestoread && data->set.max_recv_speed) {
+    if(bytestoread && data->set.max_recv_speed > 0) {
       /* In case of speed limit on receiving: if this loop already got
        * data, break out. If not, limit the amount of bytes to receive.
        * The overall, timed, speed limiting is done in multi.c */
       if(total_received)
         break;
-      if((size_t)data->set.max_recv_speed < bytestoread)
+      if(data->set.max_recv_speed < (curl_off_t)bytestoread)
         bytestoread = (size_t)data->set.max_recv_speed;
     }