diff options
author | Patrick Steinhardt <ps@pks.im> | 2018-07-20 12:56:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-20 12:56:49 +0200 |
commit | 0652abaaeaff768e78a65464e59bd1896ce2f6ce (patch) | |
tree | a7dd95e75d90d766fb98f593d6e2cf3bf5bfad39 | |
parent | fa401a32d23eb832c6494db9770e6522b11f36d7 (diff) | |
parent | 89091d36c47299ee374d50a278c7d676911f3e0d (diff) | |
download | libgit2-0652abaaeaff768e78a65464e59bd1896ce2f6ce.tar.gz |
Merge pull request #4702 from tiennou/fix/coverity
Assorted Coverity fixes
-rw-r--r-- | src/blame.c | 7 | ||||
-rw-r--r-- | src/submodule.c | 3 | ||||
-rw-r--r-- | src/transports/smart.c | 38 | ||||
-rw-r--r-- | src/transports/smart_protocol.c | 2 | ||||
-rw-r--r-- | tests/checkout/conflict.c | 30 | ||||
-rw-r--r-- | tests/checkout/tree.c | 6 | ||||
-rw-r--r-- | tests/describe/t6120.c | 4 | ||||
-rw-r--r-- | tests/diff/workdir.c | 4 | ||||
-rw-r--r-- | tests/mailmap/parsing.c | 2 | ||||
-rw-r--r-- | tests/merge/workdir/dirty.c | 2 | ||||
-rw-r--r-- | tests/stash/apply.c | 2 |
11 files changed, 54 insertions, 46 deletions
diff --git a/src/blame.c b/src/blame.c index fc87bd1c1..7a81a232c 100644 --- a/src/blame.c +++ b/src/blame.c @@ -133,8 +133,11 @@ git_blame* git_blame__alloc( return NULL; } - if (opts.flags & GIT_BLAME_USE_MAILMAP) - git_mailmap_from_repository(&gbr->mailmap, repo); + if (opts.flags & GIT_BLAME_USE_MAILMAP && + git_mailmap_from_repository(&gbr->mailmap, repo) < 0) { + git_blame_free(gbr); + return NULL; + } return gbr; } diff --git a/src/submodule.c b/src/submodule.c index d0c7d04e6..3cbddfa3e 100644 --- a/src/submodule.c +++ b/src/submodule.c @@ -260,7 +260,8 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf git_strmap_insert(names, entry->value, git_buf_detach(&buf), &rval); if (rval < 0) { giterr_set(GITERR_NOMEMORY, "error inserting submodule into hash table"); - return -1; + error = -1; + goto out; } } if (error == GIT_ITEROVER) diff --git a/src/transports/smart.c b/src/transports/smart.c index 69c129b5e..be3f9c8a8 100644 --- a/src/transports/smart.c +++ b/src/transports/smart.c @@ -279,30 +279,34 @@ static int git_smart__connect( return error; /* Detect capabilities */ - if (git_smart__detect_caps(first, &t->caps, &symrefs) < 0) { - free_symrefs(&symrefs); - return -1; - } + if ((error = git_smart__detect_caps(first, &t->caps, &symrefs)) == 0) { + /* If the only ref in the list is capabilities^{} with OID_ZERO, remove it */ + if (1 == t->refs.length && !strcmp(first->head.name, "capabilities^{}") && + git_oid_iszero(&first->head.oid)) { + git_vector_clear(&t->refs); + git_pkt_free((git_pkt *)first); + } - /* If the only ref in the list is capabilities^{} with OID_ZERO, remove it */ - if (1 == t->refs.length && !strcmp(first->head.name, "capabilities^{}") && - git_oid_iszero(&first->head.oid)) { - git_vector_clear(&t->refs); - git_pkt_free((git_pkt *)first); + /* Keep a list of heads for _ls */ + git_smart__update_heads(t, &symrefs); + } else if (error == GIT_ENOTFOUND) { + /* There was no ref packet received, or the cap list was empty */ + error = 0; + } else { + giterr_set(GITERR_NET, "invalid response"); + goto cleanup; } - /* Keep a list of heads for _ls */ - git_smart__update_heads(t, &symrefs); - - free_symrefs(&symrefs); - - if (t->rpc && git_smart__reset_stream(t, false) < 0) - return -1; + if (t->rpc && (error = git_smart__reset_stream(t, false)) < 0) + goto cleanup; /* We're now logically connected. */ t->connected = 1; - return 0; +cleanup: + free_symrefs(&symrefs); + + return error; } static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transport *transport) diff --git a/src/transports/smart_protocol.c b/src/transports/smart_protocol.c index 716aa45b4..ce63cb195 100644 --- a/src/transports/smart_protocol.c +++ b/src/transports/smart_protocol.c @@ -136,7 +136,7 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec /* No refs or capabilites, odd but not a problem */ if (pkt == NULL || pkt->capabilities == NULL) - return 0; + return GIT_ENOTFOUND; ptr = pkt->capabilities; while (ptr != NULL && *ptr != '\0') { diff --git a/tests/checkout/conflict.c b/tests/checkout/conflict.c index 9b86cfaeb..90603d4b7 100644 --- a/tests/checkout/conflict.c +++ b/tests/checkout/conflict.c @@ -93,7 +93,7 @@ static void create_index(struct checkout_index_entry *entries, size_t entries_le if (entries[i].stage == 3 && (i == 0 || strcmp(entries[i-1].path, entries[i].path) != 0 || entries[i-1].stage != 2)) p_unlink(git_buf_cstr(&path)); - git_index_remove_bypath(g_index, entries[i].path); + cl_git_pass(git_index_remove_bypath(g_index, entries[i].path)); } for (i = 0; i < entries_len; i++) { @@ -133,7 +133,7 @@ static void create_conflicting_index(void) }; create_index(checkout_index_entries, 3); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); } static void ensure_workdir_contents(const char *path, const char *contents) @@ -271,7 +271,7 @@ void test_checkout_conflict__automerge(void) }; create_index(checkout_index_entries, 3); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -303,7 +303,7 @@ void test_checkout_conflict__directory_file(void) opts.checkout_strategy |= GIT_CHECKOUT_SAFE; create_index(checkout_index_entries, 12); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -344,7 +344,7 @@ void test_checkout_conflict__directory_file_with_custom_labels(void) opts.their_label = "branch"; create_index(checkout_index_entries, 12); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -383,7 +383,7 @@ void test_checkout_conflict__link_file(void) opts.checkout_strategy |= GIT_CHECKOUT_SAFE; create_index(checkout_index_entries, 12); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -410,7 +410,7 @@ void test_checkout_conflict__links(void) opts.checkout_strategy |= GIT_CHECKOUT_SAFE; create_index(checkout_index_entries, 5); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -431,7 +431,7 @@ void test_checkout_conflict__add_add(void) opts.checkout_strategy |= GIT_CHECKOUT_SAFE; create_index(checkout_index_entries, 2); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -472,7 +472,7 @@ void test_checkout_conflict__mode_change(void) opts.checkout_strategy |= GIT_CHECKOUT_SAFE; create_index(checkout_index_entries, 18); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -604,7 +604,7 @@ void test_checkout_conflict__renames(void) create_index(checkout_index_entries, 41); create_index_names(checkout_name_entries, 9); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -789,7 +789,7 @@ void test_checkout_conflict__rename_keep_ours(void) create_index(checkout_index_entries, 41); create_index_names(checkout_name_entries, 9); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -922,7 +922,7 @@ void test_checkout_conflict__name_mangled_file_exists_in_workdir(void) create_index(checkout_index_entries, 24); create_index_names(checkout_name_entries, 6); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); /* Add some files on disk that conflict with the names that would be chosen * for the files written for each side. */ @@ -1012,7 +1012,7 @@ void test_checkout_conflict__update_only(void) opts.checkout_strategy |= GIT_CHECKOUT_UPDATE_ONLY; create_index(checkout_index_entries, 3); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(p_mkdir("merge-resolve/directory_file-two", 0777)); cl_git_rewritefile("merge-resolve/directory_file-two/file", CONFLICTING_OURS_FILE); @@ -1063,7 +1063,7 @@ void test_checkout_conflict__path_filters(void) opts.paths = patharray; create_index(checkout_index_entries, 12); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); @@ -1120,7 +1120,7 @@ void test_checkout_conflict__report_progress(void) create_index(checkout_index_entries, 12); - git_index_write(g_index); + cl_git_pass(git_index_write(g_index)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts)); diff --git a/tests/checkout/tree.c b/tests/checkout/tree.c index a69574bf3..4008935d6 100644 --- a/tests/checkout/tree.c +++ b/tests/checkout/tree.c @@ -954,7 +954,7 @@ static void create_conflict(const char *path) git_oid_fromstr(&entry.id, "2bd0a343aeef7a2cf0d158478966a6e587ff3863"); cl_git_pass(git_index_add(index, &entry)); - git_index_write(index); + cl_git_pass(git_index_write(index)); git_index_free(index); } @@ -1127,7 +1127,7 @@ void test_checkout_tree__removes_conflicts(void) create_conflict("other.txt"); cl_git_mkfile("testrepo/other.txt", "This is another conflict file.\n"); - git_index_write(index); + cl_git_pass(git_index_write(index)); cl_git_pass(git_checkout_tree(g_repo, (const git_object *)commit, &opts)); @@ -1172,7 +1172,7 @@ void test_checkout_tree__removes_conflicts_only_by_pathscope(void) create_conflict("other.txt"); cl_git_mkfile("testrepo/other.txt", "This is another conflict file.\n"); - git_index_write(index); + cl_git_pass(git_index_write(index)); cl_git_pass(git_checkout_tree(g_repo, (const git_object *)commit, &opts)); diff --git a/tests/describe/t6120.c b/tests/describe/t6120.c index 65e8582aa..5ec176b87 100644 --- a/tests/describe/t6120.c +++ b/tests/describe/t6120.c @@ -104,8 +104,8 @@ static void commit_and_tag( cl_git_append2file("describe/file", "\n"); - git_index_add_bypath(index, "describe/file"); - git_index_write(index); + cl_git_pass(git_index_add_bypath(index, "file")); + cl_git_pass(git_index_write(index)); *time += 10; cl_repo_commit_from_index(&commit_id, repo, NULL, *time, commit_msg); diff --git a/tests/diff/workdir.c b/tests/diff/workdir.c index d8270621f..dab6147b5 100644 --- a/tests/diff/workdir.c +++ b/tests/diff/workdir.c @@ -1910,7 +1910,7 @@ void test_diff_workdir__binary_detection(void) cl_git_write2file( b.ptr, data[i].ptr, data[i].size, O_WRONLY|O_TRUNC, 0664); } - git_index_write(idx); + cl_git_pass(git_index_write(idx)); cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, NULL)); @@ -1938,7 +1938,7 @@ void test_diff_workdir__binary_detection(void) cl_git_write2file(b.ptr, "baseline\n", 9, O_WRONLY|O_TRUNC, 0664); } - git_index_write(idx); + cl_git_pass(git_index_write(idx)); cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, NULL)); diff --git a/tests/mailmap/parsing.c b/tests/mailmap/parsing.c index 4479e4131..dc5096c9c 100644 --- a/tests/mailmap/parsing.c +++ b/tests/mailmap/parsing.c @@ -86,7 +86,7 @@ void test_mailmap_parsing__windows_string(void) /* Parse with windows-style line endings */ git_buf_attach_notowned(&unixbuf, string_mailmap, strlen(string_mailmap)); - git_buf_text_lf_to_crlf(&winbuf, &unixbuf); + cl_git_pass(git_buf_text_lf_to_crlf(&winbuf, &unixbuf)); cl_git_pass(git_mailmap_from_buffer(&g_mailmap, winbuf.ptr, winbuf.size)); git_buf_dispose(&winbuf); diff --git a/tests/merge/workdir/dirty.c b/tests/merge/workdir/dirty.c index 66301e156..dd7267b61 100644 --- a/tests/merge/workdir/dirty.c +++ b/tests/merge/workdir/dirty.c @@ -337,7 +337,7 @@ void test_merge_workdir_dirty__identical_staged_files_allowed(void) for (i = 0, content = result_contents[i]; content[0]; content = result_contents[++i]) { stage_content(content); - git_index_write(repo_index); + cl_git_pass(git_index_write(repo_index)); cl_git_pass(merge_branch()); } } diff --git a/tests/stash/apply.c b/tests/stash/apply.c index 16cb14000..063223ae6 100644 --- a/tests/stash/apply.c +++ b/tests/stash/apply.c @@ -34,7 +34,7 @@ void test_stash_apply__initialize(void) cl_git_pass(git_index_add_bypath(repo_index, "who")); cl_git_pass(git_index_add_bypath(repo_index, "why")); cl_git_pass(git_index_add_bypath(repo_index, "where")); - git_index_write(repo_index); + cl_git_pass(git_index_write(repo_index)); cl_git_rewritefile("stash/where", "....\n"); |