]> git.ipfire.org Git - thirdparty/git.git/commit - midx.c
midx: close linked MIDXs, avoid leaking memory
authorTaylor Blau <me@ttaylorr.com>
Tue, 31 Aug 2021 20:52:07 +0000 (16:52 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 Sep 2021 17:58:43 +0000 (10:58 -0700)
commit9bb6c2e54f88e92ba8715f2412e57c57793721e0
tree16795dad941f2d736c15ab263dacac7c1a333e67
parent177c0d6e63d7f9c707dbe2df1124dd27002d1e91
midx: close linked MIDXs, avoid leaking memory

When a repository has at least one alternate, the MIDX belonging to each
alternate is accessed through the `next` pointer on the main object
store's copy of the MIDX. close_midx() didn't bother to close any
of the linked MIDXs. It likewise didn't free the memory pointed to by
`m`, leaving uninitialized bytes with live pointers to them left around
in the heap.

Clean this up by closing linked MIDXs, and freeing up the memory pointed
to by each of them. When callers call close_midx(), then they can
discard the entire linked list of MIDXs and set their pointer to the
head of that list to NULL.

This isn't strictly required for the upcoming patches, but it makes it
much more difficult (though still possible, for e.g., by calling
`close_midx(m->next)` which leaves `m->next` pointing at uninitialized
bytes) to have pointers to uninitialized memory.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
midx.c