]> git.ipfire.org Git - thirdparty/git.git/commit
midx repack: avoid potential integer overflow on 64 bit systems
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 22 May 2025 15:55:21 +0000 (16:55 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 May 2025 21:48:36 +0000 (14:48 -0700)
commitf874c0ed90c63276e0ebc445ad6fee5dcbfacb86
tree1dd3569464af917f7d8f7ff35ba5a1adb2bb5343
parentb103881d4f4b157d86813ba5f91acd7ed6c888d0
midx repack: avoid potential integer overflow on 64 bit systems

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.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
midx-write.c