diff --git a/sha1_file.c b/sha1_file.c
index 7628ee97d9137c3cc2eae2e626fc708a88dc444a..f2b1ae0325ea16e4e46152c3d3d2d3d7f2b32e3d 100644 (file)
--- a/sha1_file.c
+++ b/sha1_file.c
* for offsets larger than 2^31.
*/
unsigned long min_size = 8 + 4*256 + nr*(20 + 4 + 4) + 20 + 20;
- if (idx_size < min_size || idx_size > min_size + (nr - 1)*8) {
+ unsigned long max_size = min_size;
+ if (nr)
+ max_size += (nr - 1)*8;
+ if (idx_size < min_size || idx_size > max_size) {
munmap(idx_map, idx_size);
return error("wrong index file size in %s", path);
}