From fc273027f16df2dd1eb66ffc7df417f605199e35 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Fri, 26 Jul 2024 10:38:45 +0200 Subject: [PATCH] transfer: speed limiting fix for 32bit systems 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/transfer.c b/lib/transfer.c index 8d21305ae4..6c95a47196 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -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; } -- 2.47.3