multi-pack-index: verify oid fanout order
[gitweb.git] / midx.c
diff --git a/midx.c b/midx.c
index 01f4d694d2865e3a38dc92290c224d18ffeb4c3c..7dab13a736a250f7506e3a825b7eea5ef0c950a5 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -950,5 +950,14 @@ int verify_midx_file(const char *object_dir)
                        midx_report("failed to load pack in position %d", i);
        }
 
+       for (i = 0; i < 255; i++) {
+               uint32_t oid_fanout1 = ntohl(m->chunk_oid_fanout[i]);
+               uint32_t oid_fanout2 = ntohl(m->chunk_oid_fanout[i + 1]);
+
+               if (oid_fanout1 > oid_fanout2)
+                       midx_report(_("oid fanout out of order: fanout[%d] = %"PRIx32" > %"PRIx32" = fanout[%d]"),
+                                   i, oid_fanout1, oid_fanout2, i + 1);
+       }
+
        return verify_midx_error;
 }