From: Phillip Wood Date: Wed, 21 May 2025 15:20:27 GMT Subject: Re: [PATCH 2/4] midx repack: avoid potential integer overflow on 64 bit systems Message-ID: <7302bdf8-f713-43eb-aa78-759bb1e1b6b6@gmail.com> In-Reply-To: On 20/05/2025 18:59, Taylor Blau wrote: > On Tue, May 20, 2025 at 04:04:25PM +0100, Phillip Wood wrote: >> From: Phillip Wood >> >> On a 64 bit system the calculation >> >> p->pack_size * pack_info[i].referenced_objects >> >> could overflow. If a pack file contains 2^28 objects with an average >> compressed size of 1KB then the pack size will be 2^38B. If all of the >> objects are referenced by the multi-pack index the sum above will >> overflow. Avoid this by using shifted integer arithmetic and changing >> the order of the calculation so that the pack size is divided by the >> total number of objects in the pack before multiplying by the number of >> objects referenced by the multi-pack index. Using a shift of 14 bits >> should give reasonable accuracy while avoiding overflow for pack sizes >> less that 1PB. > > Ahhh, this renders some of comments on the previous patch moot. I think > that this is a not-unreasonable concern to be addressing even on modern > 64-bit systems, since I have definitely encountered packs that have on > the order of ~2^28 objects in them. Thanks, that's good to know Phillip > I like this approach quite a bit, thanks! > > Thanks, > Taylor