summaryrefslogtreecommitdiff
path: root/builtin-pack-objects.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin-pack-objects.c')
-rw-r--r--builtin-pack-objects.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 11cc3c89f5..5e42387a45 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -247,12 +247,13 @@ static int revalidate_one(struct object_entry *entry,
void *data, char *type, unsigned long size)
{
int err;
- if (!data)
- return -1;
- if (size != entry->size)
- return -1;
- err = check_sha1_signature(entry->sha1, data, size,
- type_names[entry->type]);
+ if ((!data) ||
+ ((entry->type != OBJ_DELTA) &&
+ ( (size != entry->size) ||
+ strcmp(type_names[entry->type], type))))
+ err = -1;
+ else
+ err = check_sha1_signature(entry->sha1, data, size, type);
free(data);
return err;
}