summaryrefslogtreecommitdiff
path: root/pack.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-02-25 16:55:26 -0800
committerJunio C Hamano <gitster@pobox.com>2011-02-27 23:29:03 -0800
commit3c9fc074c220d5d1d2173c84cc6ae57d750e2a2c (patch)
tree99a89b4e8eaf51852e90679e553eeb44cf5e7cf6 /pack.h
parentfb956c1f44b5c99273eb9e3850717c8b489ff78f (diff)
downloadgit-3c9fc074c220d5d1d2173c84cc6ae57d750e2a2c.tar.gz
index-pack --verify: read anomalous offsets from v2 idx file
A pack v2 .idx file usually records offset using 64-bit representation only when the offset does not fit within 31-bit, but you can handcraft your .idx file to record smaller offset using 64-bit, storing all zero in the upper 4-byte. By inspecting the original idx file when running index-pack --verify, encode such low offsets that do not need to be in 64-bit but are encoded using 64-bit just like the original idx file so that we can still validate the pack/idx pair by comparing the idx file recomputed with the original. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack.h')
-rw-r--r--pack.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/pack.h b/pack.h
index dddafdd160..722a54e00a 100644
--- a/pack.h
+++ b/pack.h
@@ -41,6 +41,14 @@ struct pack_idx_option {
uint32_t version;
uint32_t off32_limit;
+
+ /*
+ * List of offsets that would fit within off32_limit but
+ * need to be written out as 64-bit entity for byte-for-byte
+ * verification.
+ */
+ int anomaly_alloc, anomaly_nr;
+ uint32_t *anomaly;
};
extern void reset_pack_idx_option(struct pack_idx_option *);