diff options
| author | nulltoken <emeric.fermas@gmail.com> | 2011-07-13 07:58:17 +0200 |
|---|---|---|
| committer | nulltoken <emeric.fermas@gmail.com> | 2011-07-13 07:58:17 +0200 |
| commit | f4ad64c109f14f9e8fd5df9d6bf93e82f039c3b0 (patch) | |
| tree | e66c8171f6d0e1dbf375e7edf8dca1c0408f487b /src/tree.c | |
| parent | e6629d8313bcc4e1ca1213ef6d78db09b3a8f8ac (diff) | |
| download | libgit2-f4ad64c109f14f9e8fd5df9d6bf93e82f039c3b0.tar.gz | |
tree: fix insertion of entries with invalid filenames
Diffstat (limited to 'src/tree.c')
| -rw-r--r-- | src/tree.c | 8 |
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; |
