Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
---
builtin/index-pack.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 59b6c56..db2370d 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -742,6 +742,19 @@ static int check_collison(struct object_entry *entry)
return 0;
}
+static void check_against_sha1table(struct object_entry *obj)
+{
+ const unsigned char *found;
+ if (!packv4)
+ return;
+
+ found = bsearch(obj->idx.sha1, sha1_table, nr_objects, 20,
+ (int (*)(const void *, const void *))hashcmp);
+ if (!found)
+ die(_("object %s not found in SHA-1 table"),
+ sha1_to_hex(obj->idx.sha1));
+}
+
static void sha1_object(const void *data, struct object_entry *obj_entry,
unsigned long size, enum object_type type,
const unsigned char *sha1)
@@ -910,6 +923,7 @@ static void resolve_delta(struct object_entry *delta_obj,
bad_object(delta_obj->idx.offset, _("failed to apply delta"));
hash_sha1_file(result->data, result->size,
typename(delta_obj->real_type), delta_obj->idx.sha1);
+ check_against_sha1table(delta_obj);
sha1_object(result->data, NULL, result->size, delta_obj->real_type,
delta_obj->idx.sha1);
counter_lock();
@@ -1087,8 +1101,12 @@ static void parse_pack_objects(unsigned char *sha1)
/* large blobs, check later */
obj->real_type = OBJ_BAD;
nr_delays++;
- } else
- sha1_object(data, NULL, obj->size, obj->type,
obj->idx.sha1);
+ check_against_sha1table(obj);
+ } else {
+ check_against_sha1table(obj);
+ sha1_object(data, NULL, obj->size, obj->type,
+ obj->idx.sha1);
+ }
free(data);
display_progress(progress, i+1);
}
--
1.8.2.83.gc99314b
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html