From 319312596a2ea1a346bcad51eba7e9aade145343 Mon Sep 17 00:00:00 2001 From: Frank Aurich <1100101@gmail.com> Date: Fri, 7 Jan 2022 17:48:08 +0100 Subject: [PATCH] fix: integer overflow when calculating `sizeWhenDone` (#2378) While the function correctly returns a `uint64_t`, internally a `size_t` variable is used to calculate the accumulated size. On 32-bit systems (e.g. Raspbian) `size_t` is only 32-bit wide, causing overflow for torrents > 4GB. --- libtransmission/completion.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libtransmission/completion.cc b/libtransmission/completion.cc index 88ed591ae..ea69ec06c 100644 --- a/libtransmission/completion.cc +++ b/libtransmission/completion.cc @@ -56,7 +56,7 @@ uint64_t tr_completion::computeSizeWhenDone() const } // count bytes that we want or that we already have - auto size = size_t{ 0 }; + auto size = uint64_t{ 0 }; for (tr_piece_index_t piece = 0; piece < block_info_->n_pieces; ++piece) { if (tor_->pieceIsWanted(piece))