On Mon, May 12, 2025 at 12:22:10PM +0000, Lidong Yan via GitGitGadget wrote: > From: Lidong Yan <502024330056@xxxxxxxxxxxxxxxx> > > In pack-bitmap.c:load_bitmap_entries_v1, the function `read_bitmap_1` > allocates a bitmap and reads index data into it. However, if any of > the validation checks following the allocation fail, the allocated bitmap > is not freed, resulting in a memory leak. To avoid this, the validation > checks should be performed before the bitmap is allocated. Thanks, this looks correct to me. > @@ -388,10 +388,6 @@ static int load_bitmap_entries_v1(struct bitmap_index *index) > return error(_("corrupt ewah bitmap: commit index %u out of range"), > (unsigned)commit_idx_pos); > > - bitmap = read_bitmap_1(index); > - if (!bitmap) > - return -1; > - > if (xor_offset > MAX_XOR_OFFSET || xor_offset > i) > return error(_("corrupted bitmap pack index")); I noticed that this code is also within a loop, so we could still return early on the next loop iteration. But by that point we will have called store_bitmap() on the result, so we only have to worry about leaking the bitmap from the current loop iteration. -Peff