From: Jeff King <peff@peff.net> To: git@vger.kernel.org Cc: Yiyuan guo <yguoaz@gmail.com> Subject: [PATCH 3/5] pack-objects: clamp negative window size to 0 Date: Sat, 1 May 2021 10:03:37 -0400 [thread overview] Message-ID: <YI1fubjvQQlrPz9D@coredump.intra.peff.net> (raw) In-Reply-To: <YI1fbERSuS7Y3LKh@coredump.intra.peff.net> 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> --- builtin/pack-objects.c | 2 ++ t/t5300-pack-object.sh | 5 +++++ 2 files changed, 7 insertions(+) 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) { diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 887e2d8d88..5c5e53f0be 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -613,4 +613,9 @@ test_expect_success '--stdin-packs with broken links' ' ) ' +test_expect_success 'negative window clamps to 0' ' + git pack-objects --progress --window=-1 neg-window <obj-list 2>stderr && + check_deltas stderr = 0 +' + test_done -- 2.31.1.875.g5dccece0aa
next prev parent reply other threads:[~2021-05-01 14:03 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-01 14:02 [PATCH 0/5] pack-objects: better handling of negative options Jeff King 2021-05-01 14:02 ` [PATCH 1/5] t5300: modernize basic tests Jeff King 2021-05-03 5:27 ` Junio C Hamano 2021-05-03 14:53 ` Jeff King 2021-05-01 14:03 ` [PATCH 2/5] t5300: check that we produced expected number of deltas Jeff King 2021-05-01 14:03 ` Jeff King [this message] 2021-05-03 12:10 ` [PATCH 3/5] pack-objects: clamp negative window size to 0 Derrick Stolee 2021-05-03 14:55 ` Jeff King 2021-05-04 18:47 ` René Scharfe 2021-05-04 21:38 ` Jeff King 2021-05-05 11:53 ` Ævar Arnfjörð Bjarmason 2021-05-05 16:19 ` René Scharfe 2021-05-01 14:04 ` [PATCH 4/5] t5316: check behavior of pack-objects --depth=0 Jeff King 2021-05-01 14:04 ` [PATCH 5/5] pack-objects: clamp negative depth to 0 Jeff King 2021-05-03 12:11 ` Derrick Stolee
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=YI1fubjvQQlrPz9D@coredump.intra.peff.net \ --to=peff@peff.net \ --cc=git@vger.kernel.org \ --cc=yguoaz@gmail.com \ --subject='Re: [PATCH 3/5] pack-objects: clamp negative window size to 0' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).