From d975fe1fa57d57cfd21a97f96f4a94b99f50f2f4 Mon Sep 17 00:00:00 2001 From: Derrick Stolee Date: Mon, 17 Apr 2023 16:21:39 +0000 Subject: fsck: check rev-index checksums The previous change added calls to verify_pack_revindex() in builtin/fsck.c, but the implementation of the method was left empty. Add the first and most-obvious check to this method: checksum verification. While here, create a helper method in the test script that makes it easy to adjust the .rev file and check that 'git fsck' reports the correct error message. Signed-off-by: Derrick Stolee Signed-off-by: Junio C Hamano --- pack-revindex.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'pack-revindex.c') diff --git a/pack-revindex.c b/pack-revindex.c index c3f2aaa3fe..007a806994 100644 --- a/pack-revindex.c +++ b/pack-revindex.c @@ -5,6 +5,7 @@ #include "packfile.h" #include "config.h" #include "midx.h" +#include "csum-file.h" struct revindex_entry { off_t offset; @@ -309,6 +310,15 @@ int load_pack_revindex(struct repository *r, struct packed_git *p) */ int verify_pack_revindex(struct packed_git *p) { + /* Do not bother checking if not initialized. */ + if (!p->revindex_map) + return 0; + + if (!hashfile_checksum_valid((const unsigned char *)p->revindex_map, p->revindex_size)) { + error(_("invalid checksum")); + return -1; + } + return 0; } -- cgit v1.2.3