From 35ed256bb7c971e56f3f544c3529a53e39f39b28 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Thu, 1 Feb 2018 05:11:05 -0800 Subject: git_odb__hashobj: provide errors messages on failures Provide error messages on hash failures: assert when given invalid input instead of failing with a user error; provide error messages on program errors. --- src/odb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/odb.c b/src/odb.c index af38a8ef3..47fdd13dd 100644 --- a/src/odb.c +++ b/src/odb.c @@ -100,11 +100,15 @@ int git_odb__hashobj(git_oid *id, git_rawobj *obj) assert(id && obj); - if (!git_object_typeisloose(obj->type)) + if (!git_object_typeisloose(obj->type)) { + giterr_set(GITERR_INVALID, "invalid object type"); return -1; + } - if (!obj->data && obj->len != 0) + if (!obj->data && obj->len != 0) { + giterr_set(GITERR_INVALID, "invalid object"); return -1; + } hdrlen = git_odb__format_object_header(header, sizeof(header), obj->len, obj->type); @@ -806,7 +810,7 @@ int git_odb_exists_prefix( git_oid *out, git_odb *db, const git_oid *short_id, size_t len) { int error; - git_oid key = {{0}}; + git_oid key = {{0}}; assert(db && short_id); @@ -1106,7 +1110,7 @@ static int odb_otype_fast(git_otype *type_p, git_odb *db, const git_oid *id) *type_p = object->cached.type; return 0; } - + error = odb_read_header_1(&_unused, type_p, db, id, false); if (error == GIT_PASSTHROUGH) { -- cgit v1.2.1