[PATCH 09/20] midx.c: prevent overflow in `fill_included_packs_batch()`
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Jul 12, 2023, 23:37 UTC
- Message-ID
- <80c79f6fea2fdafb00e6c2866ae1756c1956d16e.1689205042.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1689205042.git.me@ttaylorr.com>
In a similar spirit as in previous commits, avoid an integer overflow when computing the expected size of a MIDX.
(Note that this is also OK as-is, since `p->pack_size` is an `off_t`, so this computation should already be done as 64-bit integers. But again, let's use `st_mult()` to make this fact clear).
Signed-off-by: Taylor Blau <me@ttaylorr.com> --- midx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/midx.c b/midx.c index 57c53dbd4a..a5e4094340 100644 --- a/midx.c +++ b/midx.c @@ -1994,8 +1994,8 @@ static int fill_included_packs_batch(struct repository *r, if (open_pack_index(p) || !p->num_objects) continue; - expected_size = (size_t)(p->pack_size - * pack_info[i].referenced_objects); + expected_size = st_mult(p->pack_size, + pack_info[i].referenced_objects); expected_size /= p->num_objects; if (expected_size >= batch_size)
-- 2.41.0.347.g7b976b8871f