From: Jeff King Date: Fri, 14 Jun 2013 22:19:36 GMT Subject: Re: [PATCH 2/2] unpack_entry: do not die when we fail to apply a delta Message-ID: <20130614221936.GD29138@sigill.intra.peff.net> In-Reply-To: <7vk3lwmk0r.fsf@alter.siamese.dyndns.org> On Fri, Jun 14, 2013 at 02:59:00PM -0700, Junio C Hamano wrote: > Jeff King writes: > > > test_expect_success \ > > + 'corruption of delta base reference pointing to wrong object' \ > > + 'create_new_pack --delta-base-offset && > > + git prune-packed && > > + printf "\220\033" | do_corrupt_object $blob_3 2 && > > Interesting. You cheated in a different way with a hardcoded > offset, instead of hardcoded knowledge of where the object name > is stored in binary in the .idx file ;-) Yes. We could get it with: git show-index <"$pack.idx" | cut -d' ' -f1 | perl -e ' @pos = map { chomp; $_ } <>; my $ofs = $pos[2] - $pos[0]; my @bin; unshift @bin, $ofs & 127; while ($ofs >>= 7) { $ofs--; unshift @bin, 128 | ($ofs & 127); } binmode STDOUT; print chr for @bin; ' if that's not too ugly. Maybe the REF_DELTA one is less ugly, then, as it would not need to do the packed offset encoding, but just convert $blob1 from hex into binary. -Peff