http: fix memory leak in fetch_and_setup_pack_index()

Inside the function `fetch_and_setup_pack_index()`, when the pack
obtained using `parse_pack_index()` fails to be verified by
`verify_pack_index()`, the function returns without closing and freeing
said pack.

Fix this by calling `close_pack_index()` to munmap the index file for
the leaking pack (which might have been mmapped by `fetch_pack_index()`
or `verify_pack_index()`), and then free it, when the verification
fails.

Signed-off-by: LorenzoPegorari <lorenzo.pegorari2002@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
LorenzoPegorari
2026-06-01 15:52:12 +02:00
committed by Junio C Hamano
parent 96ee7f1650
commit 18decad922

8
http.c
View File

@@ -2614,11 +2614,13 @@ static int fetch_and_setup_pack_index(struct packfile_list *packs,
}
ret = verify_pack_index(new_pack);
if (!ret)
close_pack_index(new_pack);
close_pack_index(new_pack);
free(tmp_idx);
if (ret)
if (ret) {
free(new_pack);
return -1;
}
packfile_list_prepend(packs, new_pack);
return 0;