Re: [PATCH] Avoid infinite loop in malformed packfiles
Am 30.08.20 um 05:33 schrieb ori@eigenstate.org:
Show 15 quoted lines
>> Jeff King <peff@peff.net> writes:
>>
>>> It may be hard to test, as I suspect modern versions of Git are not
>>> happy to create such a deep chain. We could test with a lowered value of
>>> the config option, though.
>>
>> Yes, that was what I meant. Start from a 1KB text, create 50
>> revisions of the file by adding a single line at its end at a time,
>> pack with depth limit of 100, and then see "git log -p" die when the
>> allowed max lowered to 10, or something like that.
>
> Sorry about the delay -- most of my time to poke at this is over the weekend.
>
> Will that work? I'd expect that modern pack files end up being
> offset deltas, rather than reference deltas.
True, but going down all the way would work:
diff --git a/t/t5316-pack-delta-depth.sh b/t/t5316-pack-delta-depth.sh
index 0f06c40eb1..7fd21cd3ce 100755
--- a/t/t5316-pack-delta-depth.sh
+++ b/t/t5316-pack-delta-depth.sh
@@ -94,4 +94,15 @@ test_expect_success '--depth limits depth' '
test_i18ncmp expect actual
'
+test_expect_success 'maxAllowedDeltaDepth is respected' '
+ git clone . clone1 &&
+ (
+ cd clone1 &&
+ git repack -a -d &&
+ test_config core.maxAllowedDeltaDepth 0 &&
+ test_must_fail git fsck 2>err &&
+ test_i18ngrep "overlong delta chain" err
+ )
+'
+
test_done