diff options
author | Jeff King <peff@peff.net> | 2021-05-01 10:03:37 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-05-03 14:29:27 +0900 |
commit | 953aa54e1a6a7571d48eddea3ee68745bf94e69d (patch) | |
tree | 88a341bab20d94eb621c8313980576bd313133e2 /builtin/pack-objects.c | |
parent | t5300: check that we produced expected number of deltas (diff) | |
download | tgif-953aa54e1a6a7571d48eddea3ee68745bf94e69d.tar.xz |
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 <yguoaz@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/pack-objects.c')
-rw-r--r-- | builtin/pack-objects.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 6d13cd3e1a..ea7a5b3ba5 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -3871,6 +3871,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) (1U << OE_Z_DELTA_BITS) - 1); cache_max_small_delta_size = (1U << OE_Z_DELTA_BITS) - 1; } + if (window < 0) + window = 0; strvec_push(&rp, "pack-objects"); if (thin) { |