Skip to content

Commit 953aa54

Browse files
peffgitster
authored andcommitted
pack-objects: clamp negative window size to 0
A negative window size makes no sense, and the code in find_deltas() is not prepared to handle it. If you pass "-1", for example, we end up generate a 0-length array of "struct unpacked", but our loop assumes it has at least one entry in it (and we end up reading garbage memory). We could complain to the user about this, but it's more forgiving to just clamp it to 0, which means "do not find any deltas at all". The 0-case is already tested earlier in the script, so we'll make sure this does the same thing. Reported-by: Yiyuan guo <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9535678 commit 953aa54

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

builtin/pack-objects.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3871,6 +3871,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
38713871
(1U << OE_Z_DELTA_BITS) - 1);
38723872
cache_max_small_delta_size = (1U << OE_Z_DELTA_BITS) - 1;
38733873
}
3874+
if (window < 0)
3875+
window = 0;
38743876

38753877
strvec_push(&rp, "pack-objects");
38763878
if (thin) {

t/t5300-pack-object.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,4 +613,9 @@ test_expect_success '--stdin-packs with broken links' '
613613
)
614614
'
615615

616+
test_expect_success 'negative window clamps to 0' '
617+
git pack-objects --progress --window=-1 neg-window <obj-list 2>stderr &&
618+
check_deltas stderr = 0
619+
'
620+
616621
test_done

0 commit comments

Comments
 (0)