t5303: test some corrupt deltas
commit9caf0107a86d11f059554e55c461f8e7657d89bf
authorJeff King <peff@peff.net>
Thu, 30 Aug 2018 07:09:32 +0000 (30 03:09 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Aug 2018 17:30:21 +0000 (30 10:30 -0700)
tree67de344e4e0db1a64fd0c1e52d006a2d20875e3c
parentd65930c5a9fe73ebc4d157ebe1fb9fd9907f2f70
t5303: test some corrupt deltas

We don't have any tests that specifically check boundary
cases in patch_delta(). It obviously gets exercised by tests
which read from packfiles, but it's hard to create packfiles
with bogus deltas.

So let's cover some obvious boundary cases:

  1. commands that overflow the result buffer

     a. literal content from the delta

     b. copies from a base

  2. commands where the source isn't large enough

     a. literal content from a truncated delta

     b. copies that need more bytes than the base has

  3. copy commands who parameters are truncated

And indeed, we have problems with both 2a and 3. I've marked
these both as expect_failure, though note that because they
involve reading past the end of a buffer, they will
typically only be caught when run under valgrind or ASan.

There's one more test here, too, which just applies a basic
delta. Since all of the other tests expect failure and we
don't otherwise use "test-tool delta" in the test suite,
this gives a sanity check that the tool works at all.

These are based on an earlier patch by Jann Horn
<jannh@google.com>.

Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5303-pack-corruption-resilience.sh