]> git.ipfire.org Git - thirdparty/git.git/commitdiff
midx: avoid negative array index
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 22 May 2025 15:55:22 +0000 (16:55 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 May 2025 21:48:37 +0000 (14:48 -0700)
nth_midxed_pack_int_id() returns the index of the pack file in the multi
pack index's list of packfiles that the specified object. The index is
returned as a uint32_t. Storing this in an int will make the index
negative if the most significant bit is set. Fix this by using uint32_t
as the rest of the code does. This is unlikely to be a practical problem
as it requires the multipack index to reference 2^31 packfiles.

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

index 8121e96f4fda009f3b75d44d4b78973efc8ec25b..ba4a94950a8314ce303125f983176208d1a019a1 100644 (file)
@@ -1566,7 +1566,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
                                          _("Counting referenced objects"),
                                          m->num_objects);
        for (i = 0; i < m->num_objects; i++) {
-               int pack_int_id = nth_midxed_pack_int_id(m, i);
+               uint32_t pack_int_id = nth_midxed_pack_int_id(m, i);
                count[pack_int_id]++;
                display_progress(progress, i + 1);
        }
@@ -1697,7 +1697,7 @@ static void fill_included_packs_batch(struct repository *r,
 
        total_size = 0;
        for (i = 0; total_size < batch_size && i < m->num_packs; i++) {
-               int pack_int_id = pack_info[i].pack_int_id;
+               uint32_t pack_int_id = pack_info[i].pack_int_id;
                struct packed_git *p = m->packs[pack_int_id];
                uint64_t expected_size;