pack-bitmap: make bitmap header handling hash agnostic
Increase the checksum field in struct bitmap_disk_header to be GIT_MAX_RAWSZ bytes in length and ensure that we hash the proper number of bytes out when computing the bitmap checksum. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5a8643eff1
commit
0f4d6cada8
@ -535,7 +535,7 @@ void bitmap_writer_finish(struct pack_idx_entry **index,
|
||||
header.entry_count = htonl(writer.selected_nr);
|
||||
hashcpy(header.checksum, writer.pack_checksum);
|
||||
|
||||
hashwrite(f, &header, sizeof(header));
|
||||
hashwrite(f, &header, sizeof(header) - GIT_MAX_RAWSZ + the_hash_algo->rawsz);
|
||||
dump_bitmap(f, writer.commits);
|
||||
dump_bitmap(f, writer.trees);
|
||||
dump_bitmap(f, writer.blobs);
|
||||
|
@ -163,7 +163,7 @@ static int load_bitmap_header(struct bitmap_index *index)
|
||||
}
|
||||
|
||||
index->entry_count = ntohl(header->entry_count);
|
||||
index->map_pos += sizeof(*header);
|
||||
index->map_pos += sizeof(*header) - GIT_MAX_RAWSZ + the_hash_algo->rawsz;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@ struct bitmap_disk_header {
|
||||
uint16_t version;
|
||||
uint16_t options;
|
||||
uint32_t entry_count;
|
||||
unsigned char checksum[20];
|
||||
unsigned char checksum[GIT_MAX_RAWSZ];
|
||||
};
|
||||
|
||||
static const char BITMAP_IDX_SIGNATURE[] = {'B', 'I', 'T', 'M'};
|
||||
|
Loading…
Reference in New Issue
Block a user