summaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2018-01-29 22:37:12 +0000
committerGitHub <noreply@github.com>2018-01-29 22:37:12 +0000
commit895fd51a434ac50ebd53e996bd9149302ca3e134 (patch)
tree0011f4797b360cf1a045c73af82411816f833347 /src/tree.c
parentc935b926c90a1b5b35caa7b8fb8dedd54b235ec5 (diff)
parent275f103d4c515d40c73cc17ae7880f1091414393 (diff)
downloadlibgit2-895fd51a434ac50ebd53e996bd9149302ca3e134.tar.gz
Merge pull request #4474 from pks-t/pks/null-oid
Special-casing null OIDs
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/tree.c b/src/tree.c
index 75fde2c8f..6a136a6b7 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -498,6 +498,9 @@ static int append_entry(
if (!valid_entry_name(bld->repo, filename))
return tree_error("failed to insert entry: invalid name for a tree entry", filename);
+ if (git_oid_iszero(id))
+ return tree_error("failed to insert entry: invalid null OID for a tree entry", filename);
+
entry = alloc_entry(filename, strlen(filename), id);
GITERR_CHECK_ALLOC(entry);
@@ -740,6 +743,9 @@ int git_treebuilder_insert(
if (!valid_entry_name(bld->repo, filename))
return tree_error("failed to insert entry: invalid name for a tree entry", filename);
+ if (git_oid_iszero(id))
+ return tree_error("failed to insert entry: invalid null OID", filename);
+
if (filemode != GIT_FILEMODE_COMMIT &&
!git_object__is_valid(bld->repo, id, otype_from_mode(filemode)))
return tree_error("failed to insert entry: invalid object specified", filename);