Merge branch 'jk/parse-object-type-mismatch'
`parse_object()` hardening when checking for the existence of a suspected blob object. * jk/parse-object-type-mismatch: parse_object(): simplify blob conditional parse_object(): check on-disk type of suspected blob parse_object(): drop extra "has" check before checking object type
This commit is contained in:
commit
ba88f8c81d
5
object.c
5
object.c
@ -286,9 +286,8 @@ struct object *parse_object_with_flags(struct repository *r,
|
||||
return &commit->object;
|
||||
}
|
||||
|
||||
if ((obj && obj->type == OBJ_BLOB && repo_has_object_file(r, oid)) ||
|
||||
(!obj && repo_has_object_file(r, oid) &&
|
||||
oid_object_info(r, oid, NULL) == OBJ_BLOB)) {
|
||||
if ((!obj || obj->type == OBJ_BLOB) &&
|
||||
oid_object_info(r, oid, NULL) == OBJ_BLOB) {
|
||||
if (!skip_hash && stream_object_signature(r, repl) < 0) {
|
||||
error(_("hash mismatch %s"), oid_to_hex(oid));
|
||||
return NULL;
|
||||
|
@ -121,8 +121,8 @@ test_expect_success 'setup unexpected non-blob tag' '
|
||||
tag=$(git hash-object -w --literally -t tag broken-tag)
|
||||
'
|
||||
|
||||
test_expect_success 'TODO (should fail!): traverse unexpected non-blob tag (lone)' '
|
||||
git rev-list --objects $tag
|
||||
test_expect_success 'traverse unexpected non-blob tag (lone)' '
|
||||
test_must_fail git rev-list --objects $tag
|
||||
'
|
||||
|
||||
test_expect_success 'traverse unexpected non-blob tag (seen)' '
|
||||
|
Loading…
Reference in New Issue
Block a user