[PATCH v2 08/11] multi-pack-index: fix 32-bit vs 64-bit size check
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Sep 13, 2018, 18:02 UTC
- Message-ID
- <210649bf838bf0dc338671c691cbd015bef41240.1536861730.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.34.v2.git.gitgitgadget@gmail.com>
From: Derrick Stolee <dstolee@microsoft.com>
When loading a 64-bit offset, we intend to check that off_t can store the resulting offset. However, the condition accidentally checks the 32-bit offset to see if it is smaller than a 64-bit value. Fix it, and this will be covered by a test in the 'git multi-pack-index verify' command in a later commit.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com> --- midx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/midx.c b/midx.c index 06d5cfc826..80094c02a7 100644 --- a/midx.c +++ b/midx.c @@ -236,7 +236,7 @@ static off_t nth_midxed_offset(struct multi_pack_index *m, uint32_t pos) offset32 = get_be32(offset_data + sizeof(uint32_t)); if (m->chunk_large_offsets && offset32 & MIDX_LARGE_OFFSET_NEEDED) { - if (sizeof(offset32) < sizeof(uint64_t)) + if (sizeof(off_t) < sizeof(uint64_t)) die(_("multi-pack-index stores a 64-bit offset, but off_t is too small")); offset32 ^= MIDX_LARGE_OFFSET_NEEDED;
-- gitgitgadget