summaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2011-07-13 07:58:17 +0200
committernulltoken <emeric.fermas@gmail.com>2011-07-13 07:58:17 +0200
commitf4ad64c109f14f9e8fd5df9d6bf93e82f039c3b0 (patch)
treee66c8171f6d0e1dbf375e7edf8dca1c0408f487b /src/tree.c
parente6629d8313bcc4e1ca1213ef6d78db09b3a8f8ac (diff)
downloadlibgit2-f4ad64c109f14f9e8fd5df9d6bf93e82f039c3b0.tar.gz
tree: fix insertion of entries with invalid filenames
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/tree.c b/src/tree.c
index 114181f1b..975d36a70 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -379,10 +379,12 @@ int git_treebuilder_insert(git_tree_entry **entry_out, git_treebuilder *bld, con
assert(bld && id && filename);
if (!valid_attributes(attributes))
- return git__throw(GIT_ERROR, "Failed to insert entry. Invalid atrributes");
+ return git__throw(GIT_ERROR, "Failed to insert entry. Invalid attributes");
- if (build_ksearch(&ksearch, filename) == GIT_SUCCESS &&
- (pos = git_vector_bsearch2(&bld->entries, entry_search_cmp, &ksearch)) != GIT_ENOTFOUND) {
+ if (build_ksearch(&ksearch, filename) < GIT_SUCCESS)
+ return git__throw(GIT_ERROR, "Failed to insert entry. Invalid filename '%s'", filename);
+
+ if ((pos = git_vector_bsearch2(&bld->entries, entry_search_cmp, &ksearch)) != GIT_ENOTFOUND) {
entry = git_vector_get(&bld->entries, pos);
if (entry->removed) {
entry->removed = 0;