aboutsummaryrefslogtreecommitdiffstats
path: root/midx.c
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2018-09-13 11:02:16 -0700
committerJunio C Hamano <gitster@pobox.com>2018-09-17 13:49:41 -0700
commitd3f8e211700c6c38f905a7d7ab1338df4784c79d (patch)
treed274f2e5eccd959ac165a6607f10f095381ff321 /midx.c
parent53ad0407444ac4da835dbe9cf85c272b4065f3b4 (diff)
downloadgit-d3f8e211700c6c38f905a7d7ab1338df4784c79d.tar.gz
multi-pack-index: verify corrupt chunk lookup table
Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'midx.c')
-rw-r--r--midx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/midx.c b/midx.c
index 7199b8392b..9e43216d09 100644
--- a/midx.c
+++ b/midx.c
@@ -100,6 +100,9 @@ struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local
uint64_t chunk_offset = get_be64(m->data + MIDX_HEADER_SIZE + 4 +
MIDX_CHUNKLOOKUP_WIDTH * i);
+ if (chunk_offset >= m->data_len)
+ die(_("invalid chunk offset (too large)"));
+
switch (chunk_id) {
case MIDX_CHUNKID_PACKNAMES:
m->chunk_pack_names = m->data + chunk_offset;