]> git.ipfire.org Git - thirdparty/git.git/commit
patch-delta: consistently report corruption
authorJann Horn <jannh@google.com>
Thu, 30 Aug 2018 07:10:26 +0000 (03:10 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Aug 2018 17:30:22 +0000 (10:30 -0700)
commitfa72f90e7a5cfbbc32860c6336628c96791b5af3
tree661cb3ad4dbfed7cc0a23c9199650593d3c5a22f
parent21870efc4aab4732ba2c422ef116597c54e4a8ec
patch-delta: consistently report corruption

When applying a delta, if we see an opcode that cannot be
fulfilled (e.g., asking to write more bytes than the
destination has left), we break out of our parsing loop but
don't signal an explicit error. We rely on the sanity check
after the loop to see if we have leftover delta bytes or
didn't fill our result buffer.

This can silently ignore corruption when the delta buffer
ends with a bogus command and the destination buffer is
already full. Instead, let's jump into the error handler
directly when we see this case.

Note that the tests also cover the "bad opcode" case, which
already handles this correctly.

Signed-off-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>
patch-delta.c
t/t5303-pack-corruption-resilience.sh