Commit a3f9617bcf8154cee6ffbf873580788791135a03

Carlos Martín Nieto 2022-05-03T14:09:40

midx: do not verify the checksum on load This is something we only want to do during explicit verification rather than on every load. Verifying does not seem like a big deal when we're running with test workloads but once your `multi-pack-index` reaches gigabytes, we spend more time hashing this than doing any work.

diff --git a/src/libgit2/midx.c b/src/libgit2/midx.c
index d4e53c4..c2e643f 100644
--- a/src/libgit2/midx.c
+++ b/src/libgit2/midx.c
@@ -179,7 +179,6 @@ int git_midx_parse(
 	uint32_t i;
 	off64_t last_chunk_offset, chunk_offset, trailer_offset;
 	size_t checksum_size;
-	unsigned char checksum[GIT_HASH_SHA1_SIZE];
 	int error;
 	struct git_midx_chunk chunk_packfile_names = {0},
 					 chunk_oid_fanout = {0},
@@ -217,11 +216,6 @@ int git_midx_parse(
 		return midx_error("wrong index size");
 	memcpy(idx->checksum, data + trailer_offset, checksum_size);
 
-	if (git_hash_buf(checksum, data, (size_t)trailer_offset, GIT_HASH_ALGORITHM_SHA1) < 0)
-		return midx_error("could not calculate signature");
-	if (memcmp(checksum, idx->checksum, checksum_size) != 0)
-		return midx_error("index signature mismatch");
-
 	chunk_hdr = data + sizeof(struct git_midx_header);
 	last_chunk = NULL;
 	for (i = 0; i < hdr->chunks; ++i, chunk_hdr += 12) {