]> git.ipfire.org Git - thirdparty/git.git/commit
t5319: corrupt more bytes of the midx checksum
authorJeff King <peff@peff.net>
Tue, 16 Nov 2021 21:38:50 +0000 (16:38 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Nov 2021 22:35:08 +0000 (14:35 -0800)
commit152923b132d57e1dbd693a8cb9a8bc1827405674
tree3e63a213c5a819f46c1a20050bb209cd7399d50e
parent5fbd2fc5997dfa4d4593a862fe729b1e7a89bcf8
t5319: corrupt more bytes of the midx checksum

One of the tests in t5319 corrupts the checksum of the midx file by
writing a single 0xff over the final byte, and then confirms that we
detect the problem. This usually works fine, but would break if the
actual checksum ended with that same byte already.

It seems like this should happen in 1 out of 256 test runs, but it turns
out to be less often in practice. The contents of the midx are mostly
deterministic because it's based on the objects, and we remove most
sources of randomness by setting GIT_COMMITTER_DATE, etc.  However,
there's still some randomness: some objects are duplicated between
packs, and the midx must decide which to use, which can be based on
timing.

So very occasionally we can end up with a real 0xff byte, and the test
fails. The most robust fix would be to read out the final byte and then
change it to something else (e.g., adding 1 mod 256). But that's awkward
to do in shell. Let's just blindly corrupt 10 bytes instead of 1, which
reduces our chances of an accidental noop to 1 in 2^80.

Reported-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5319-multi-pack-index.sh