diff options
Diffstat (limited to 'unpack-objects.c')
-rw-r--r-- | unpack-objects.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/unpack-objects.c b/unpack-objects.c index 9da3ac89a8..91a71c55c6 100644 --- a/unpack-objects.c +++ b/unpack-objects.c @@ -61,7 +61,7 @@ static int check_index(void) unsigned int nr; int i; - if (index_size < 4*256) + if (index_size < 4*256 + 20) return error("index file too small"); nr = 0; for (i = 0; i < 256; i++) { @@ -70,11 +70,14 @@ static int check_index(void) return error("non-monotonic index"); nr = n; } - if (index_size != 4*256 + nr * 24) { - printf("index_size=%lu, expected %u (%u)\n", - index_size, 4*256 + nr * 24, nr); + /* + * Total size: + * - 256 index entries 4 bytes each + * - 24-byte entries * nr (20-byte sha1 + 4-byte offset) + * - 20-byte SHA1 file checksum + */ + if (index_size != 4*256 + nr * 24 + 20) return error("wrong index file size"); - } nr_entries = nr; pack_list = xmalloc(nr * sizeof(struct pack_entry *)); |