Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
pack-check.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/pack-check.c b/pack-check.c
index 0c19b6e..e33ea79 100644
--- a/pack-check.c
+++ b/pack-check.c
@@ -79,6 +79,8 @@ static int verify_packfile(struct packed_git *p,
err = error("%s SHA1 does not match its index",
p->pack_name);
unuse_pack(w_curs);
+ if (err)
+ return err;
/* Make sure everything reachable from idx is valid. Since we
* have verified that nr_objects matches between idx and pack,@@ -106,11 +108,13 @@ static int verify_packfile(struct packed_git *p,
off_t offset = entries[i].offset;
off_t len = entries[i+1].offset - offset;
unsigned int nr = entries[i].nr;
- if (check_pack_crc(p, w_curs, offset, len, nr))
+ if (check_pack_crc(p, w_curs, offset, len, nr)) {
err = error("index CRC mismatch for object %s "
"from %s at offset %"PRIuMAX"",
sha1_to_hex(entries[i].sha1),
p->pack_name, (uintmax_t)offset);
+ break;
+ }
}
data = unpack_entry(p, entries[i].offset, &type, &size);
if (!data) {--
1.7.4.74.g639db