]> git.ipfire.org Git - thirdparty/git.git/commit - midx.h
midx: bounds-check large offset chunk
authorJeff King <peff@peff.net>
Mon, 9 Oct 2023 21:05:30 +0000 (17:05 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Oct 2023 22:55:01 +0000 (15:55 -0700)
commit2abd56e9b2195c8111ff5d16efafabc5bccba92b
treef815b1abdd934dc70a3355deb5fcade1e7dd9dfa
parent0924869b4e27ff9db63e2d85b892244e058fecc3
midx: bounds-check large offset chunk

When we see a large offset bit in the regular midx offset table, we
use the entry as an index into a separate large offset table (just like
a pack idx does). But we don't bounds-check the access to that large
offset table (nor even record its size when we parse the chunk!).

The equivalent code for a regular pack idx is in check_pack_index_ptr().
But things are a bit simpler here because of the chunked format: we can
just check our array index directly.

As a bonus, we can get rid of the st_mult() here. If our array
bounds-check is successful, then we know that the result will fit in a
size_t (and the bounds check uses a division to avoid overflow
entirely).

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