pack-bitmap: fix memory leak if load_bitmap_entries_v1 failed
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. Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
7a1d2bd0a5
commit
7291c2be6a
@@ -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"));
|
||||
|
||||
@@ -402,6 +398,10 @@ static int load_bitmap_entries_v1(struct bitmap_index *index)
|
||||
return error(_("invalid XOR offset in bitmap pack index"));
|
||||
}
|
||||
|
||||
bitmap = read_bitmap_1(index);
|
||||
if (!bitmap)
|
||||
return -1;
|
||||
|
||||
recent_bitmaps[i % MAX_XOR_OFFSET] = store_bitmap(
|
||||
index, bitmap, &oid, xor_bitmap, flags);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user