midx: avoid negative array index

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>

Phillip Wood committed May 22, 2025 at 16:55 UTC 3aa98a61da6e1403081b4dfaa0c644614d228bac
1 file changed +2 -2
midx-write.c
+2 -2
@@ -1566,7 +1566,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
1566 _("Counting referenced objects"),
1567 m->num_objects);
1568 for (i = 0; i < m->num_objects; i++) {
1569 - int pack_int_id = nth_midxed_pack_int_id(m, i);
1569 + uint32_t pack_int_id = nth_midxed_pack_int_id(m, i);
1570 count[pack_int_id]++;
1571 display_progress(progress, i + 1);
1572 }
@@ -1697,7 +1697,7 @@ static void fill_included_packs_batch(struct repository *r,
1697
1698 total_size = 0;
1699 for (i = 0; total_size < batch_size && i < m->num_packs; i++) {
1700 - int pack_int_id = pack_info[i].pack_int_id;
1700 + uint32_t pack_int_id = pack_info[i].pack_int_id;
1701 struct packed_git *p = m->packs[pack_int_id];
1702 uint64_t expected_size;
1703