]> git.ipfire.org Git - thirdparty/git.git/commit - midx.h
midx: check size of revindex chunk
authorJeff King <peff@peff.net>
Mon, 9 Oct 2023 21:05:33 +0000 (17:05 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Oct 2023 22:55:01 +0000 (15:55 -0700)
commitc0fe9b2da5610bd4ff62d7871dfbbfa0247c7949
tree2c861264c32d0abb09e426f94107f6f51b66b864
parent2abd56e9b2195c8111ff5d16efafabc5bccba92b
midx: check size of revindex chunk

When we load a revindex from disk, we check the size of the file
compared to the number of objects we expect it to have. But when we use
a RIDX chunk stored directly in the midx, we just access the memory
directly. This can lead to out-of-bounds memory access for a corrupted
or malicious multi-pack-index file.

We can catch this by recording the RIDX chunk size, and then checking it
against the expected size when we "load" the revindex. Note that this
check is much simpler than the one that load_revindex_from_disk() does,
because we just have the data array with no header (so we do not need
to account for the header size, and nor do we need to bother validating
the header values).

The test confirms both that we catch this case, and that we continue the
process (the revindex is required to use the midx bitmaps, but we
fallback to a non-bitmap traversal).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
midx.c
midx.h
pack-revindex.c
t/t5319-multi-pack-index.sh