Unverified Commit 0652abaa by Patrick Steinhardt Committed by GitHub

Merge pull request #4702 from tiennou/fix/coverity

Assorted Coverity fixes
parents fa401a32 89091d36
...@@ -133,8 +133,11 @@ git_blame* git_blame__alloc( ...@@ -133,8 +133,11 @@ git_blame* git_blame__alloc(
return NULL; return NULL;
} }
if (opts.flags & GIT_BLAME_USE_MAILMAP) if (opts.flags & GIT_BLAME_USE_MAILMAP &&
git_mailmap_from_repository(&gbr->mailmap, repo); git_mailmap_from_repository(&gbr->mailmap, repo) < 0) {
git_blame_free(gbr);
return NULL;
}
return gbr; return gbr;
} }
......
...@@ -260,7 +260,8 @@ static int load_submodule_names(git_strmap **out, git_repository *repo, git_conf ...@@ -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); git_strmap_insert(names, entry->value, git_buf_detach(&buf), &rval);
if (rval < 0) { if (rval < 0) {
giterr_set(GITERR_NOMEMORY, "error inserting submodule into hash table"); giterr_set(GITERR_NOMEMORY, "error inserting submodule into hash table");
return -1; error = -1;
goto out;
} }
} }
if (error == GIT_ITEROVER) if (error == GIT_ITEROVER)
......
...@@ -279,30 +279,34 @@ static int git_smart__connect( ...@@ -279,30 +279,34 @@ static int git_smart__connect(
return error; return error;
/* Detect capabilities */ /* Detect capabilities */
if (git_smart__detect_caps(first, &t->caps, &symrefs) < 0) { if ((error = git_smart__detect_caps(first, &t->caps, &symrefs)) == 0) {
free_symrefs(&symrefs); /* If the only ref in the list is capabilities^{} with OID_ZERO, remove it */
return -1; 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 */ /* Keep a list of heads for _ls */
if (1 == t->refs.length && !strcmp(first->head.name, "capabilities^{}") && git_smart__update_heads(t, &symrefs);
git_oid_iszero(&first->head.oid)) { } else if (error == GIT_ENOTFOUND) {
git_vector_clear(&t->refs); /* There was no ref packet received, or the cap list was empty */
git_pkt_free((git_pkt *)first); error = 0;
} else {
giterr_set(GITERR_NET, "invalid response");
goto cleanup;
} }
/* Keep a list of heads for _ls */ if (t->rpc && (error = git_smart__reset_stream(t, false)) < 0)
git_smart__update_heads(t, &symrefs); goto cleanup;
free_symrefs(&symrefs);
if (t->rpc && git_smart__reset_stream(t, false) < 0)
return -1;
/* We're now logically connected. */ /* We're now logically connected. */
t->connected = 1; 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) static int git_smart__ls(const git_remote_head ***out, size_t *size, git_transport *transport)
......
...@@ -136,7 +136,7 @@ int git_smart__detect_caps(git_pkt_ref *pkt, transport_smart_caps *caps, git_vec ...@@ -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 */ /* No refs or capabilites, odd but not a problem */
if (pkt == NULL || pkt->capabilities == NULL) if (pkt == NULL || pkt->capabilities == NULL)
return 0; return GIT_ENOTFOUND;
ptr = pkt->capabilities; ptr = pkt->capabilities;
while (ptr != NULL && *ptr != '\0') { while (ptr != NULL && *ptr != '\0') {
......
...@@ -93,7 +93,7 @@ static void create_index(struct checkout_index_entry *entries, size_t entries_le ...@@ -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)) 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)); 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++) { for (i = 0; i < entries_len; i++) {
...@@ -133,7 +133,7 @@ static void create_conflicting_index(void) ...@@ -133,7 +133,7 @@ static void create_conflicting_index(void)
}; };
create_index(checkout_index_entries, 3); 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) static void ensure_workdir_contents(const char *path, const char *contents)
...@@ -271,7 +271,7 @@ void test_checkout_conflict__automerge(void) ...@@ -271,7 +271,7 @@ void test_checkout_conflict__automerge(void)
}; };
create_index(checkout_index_entries, 3); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -303,7 +303,7 @@ void test_checkout_conflict__directory_file(void) ...@@ -303,7 +303,7 @@ void test_checkout_conflict__directory_file(void)
opts.checkout_strategy |= GIT_CHECKOUT_SAFE; opts.checkout_strategy |= GIT_CHECKOUT_SAFE;
create_index(checkout_index_entries, 12); 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)); 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) ...@@ -344,7 +344,7 @@ void test_checkout_conflict__directory_file_with_custom_labels(void)
opts.their_label = "branch"; opts.their_label = "branch";
create_index(checkout_index_entries, 12); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -383,7 +383,7 @@ void test_checkout_conflict__link_file(void) ...@@ -383,7 +383,7 @@ void test_checkout_conflict__link_file(void)
opts.checkout_strategy |= GIT_CHECKOUT_SAFE; opts.checkout_strategy |= GIT_CHECKOUT_SAFE;
create_index(checkout_index_entries, 12); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -410,7 +410,7 @@ void test_checkout_conflict__links(void) ...@@ -410,7 +410,7 @@ void test_checkout_conflict__links(void)
opts.checkout_strategy |= GIT_CHECKOUT_SAFE; opts.checkout_strategy |= GIT_CHECKOUT_SAFE;
create_index(checkout_index_entries, 5); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -431,7 +431,7 @@ void test_checkout_conflict__add_add(void) ...@@ -431,7 +431,7 @@ void test_checkout_conflict__add_add(void)
opts.checkout_strategy |= GIT_CHECKOUT_SAFE; opts.checkout_strategy |= GIT_CHECKOUT_SAFE;
create_index(checkout_index_entries, 2); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -472,7 +472,7 @@ void test_checkout_conflict__mode_change(void) ...@@ -472,7 +472,7 @@ void test_checkout_conflict__mode_change(void)
opts.checkout_strategy |= GIT_CHECKOUT_SAFE; opts.checkout_strategy |= GIT_CHECKOUT_SAFE;
create_index(checkout_index_entries, 18); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -604,7 +604,7 @@ void test_checkout_conflict__renames(void) ...@@ -604,7 +604,7 @@ void test_checkout_conflict__renames(void)
create_index(checkout_index_entries, 41); create_index(checkout_index_entries, 41);
create_index_names(checkout_name_entries, 9); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -789,7 +789,7 @@ void test_checkout_conflict__rename_keep_ours(void) ...@@ -789,7 +789,7 @@ void test_checkout_conflict__rename_keep_ours(void)
create_index(checkout_index_entries, 41); create_index(checkout_index_entries, 41);
create_index_names(checkout_name_entries, 9); 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)); 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) ...@@ -922,7 +922,7 @@ void test_checkout_conflict__name_mangled_file_exists_in_workdir(void)
create_index(checkout_index_entries, 24); create_index(checkout_index_entries, 24);
create_index_names(checkout_name_entries, 6); 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 /* Add some files on disk that conflict with the names that would be chosen
* for the files written for each side. */ * for the files written for each side. */
...@@ -1012,7 +1012,7 @@ void test_checkout_conflict__update_only(void) ...@@ -1012,7 +1012,7 @@ void test_checkout_conflict__update_only(void)
opts.checkout_strategy |= GIT_CHECKOUT_UPDATE_ONLY; opts.checkout_strategy |= GIT_CHECKOUT_UPDATE_ONLY;
create_index(checkout_index_entries, 3); 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_pass(p_mkdir("merge-resolve/directory_file-two", 0777));
cl_git_rewritefile("merge-resolve/directory_file-two/file", CONFLICTING_OURS_FILE); cl_git_rewritefile("merge-resolve/directory_file-two/file", CONFLICTING_OURS_FILE);
...@@ -1063,7 +1063,7 @@ void test_checkout_conflict__path_filters(void) ...@@ -1063,7 +1063,7 @@ void test_checkout_conflict__path_filters(void)
opts.paths = patharray; opts.paths = patharray;
create_index(checkout_index_entries, 12); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
...@@ -1120,7 +1120,7 @@ void test_checkout_conflict__report_progress(void) ...@@ -1120,7 +1120,7 @@ void test_checkout_conflict__report_progress(void)
create_index(checkout_index_entries, 12); 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)); cl_git_pass(git_checkout_index(g_repo, g_index, &opts));
......
...@@ -954,7 +954,7 @@ static void create_conflict(const char *path) ...@@ -954,7 +954,7 @@ static void create_conflict(const char *path)
git_oid_fromstr(&entry.id, "2bd0a343aeef7a2cf0d158478966a6e587ff3863"); git_oid_fromstr(&entry.id, "2bd0a343aeef7a2cf0d158478966a6e587ff3863");
cl_git_pass(git_index_add(index, &entry)); cl_git_pass(git_index_add(index, &entry));
git_index_write(index); cl_git_pass(git_index_write(index));
git_index_free(index); git_index_free(index);
} }
...@@ -1127,7 +1127,7 @@ void test_checkout_tree__removes_conflicts(void) ...@@ -1127,7 +1127,7 @@ void test_checkout_tree__removes_conflicts(void)
create_conflict("other.txt"); create_conflict("other.txt");
cl_git_mkfile("testrepo/other.txt", "This is another conflict file.\n"); 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)); 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) ...@@ -1172,7 +1172,7 @@ void test_checkout_tree__removes_conflicts_only_by_pathscope(void)
create_conflict("other.txt"); create_conflict("other.txt");
cl_git_mkfile("testrepo/other.txt", "This is another conflict file.\n"); 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)); cl_git_pass(git_checkout_tree(g_repo, (const git_object *)commit, &opts));
......
...@@ -104,8 +104,8 @@ static void commit_and_tag( ...@@ -104,8 +104,8 @@ static void commit_and_tag(
cl_git_append2file("describe/file", "\n"); cl_git_append2file("describe/file", "\n");
git_index_add_bypath(index, "describe/file"); cl_git_pass(git_index_add_bypath(index, "file"));
git_index_write(index); cl_git_pass(git_index_write(index));
*time += 10; *time += 10;
cl_repo_commit_from_index(&commit_id, repo, NULL, *time, commit_msg); cl_repo_commit_from_index(&commit_id, repo, NULL, *time, commit_msg);
......
...@@ -1910,7 +1910,7 @@ void test_diff_workdir__binary_detection(void) ...@@ -1910,7 +1910,7 @@ void test_diff_workdir__binary_detection(void)
cl_git_write2file( cl_git_write2file(
b.ptr, data[i].ptr, data[i].size, O_WRONLY|O_TRUNC, 0664); 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)); cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, NULL));
...@@ -1938,7 +1938,7 @@ void test_diff_workdir__binary_detection(void) ...@@ -1938,7 +1938,7 @@ void test_diff_workdir__binary_detection(void)
cl_git_write2file(b.ptr, "baseline\n", 9, O_WRONLY|O_TRUNC, 0664); 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)); cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, NULL));
......
...@@ -86,7 +86,7 @@ void test_mailmap_parsing__windows_string(void) ...@@ -86,7 +86,7 @@ void test_mailmap_parsing__windows_string(void)
/* Parse with windows-style line endings */ /* Parse with windows-style line endings */
git_buf_attach_notowned(&unixbuf, string_mailmap, strlen(string_mailmap)); 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)); cl_git_pass(git_mailmap_from_buffer(&g_mailmap, winbuf.ptr, winbuf.size));
git_buf_dispose(&winbuf); git_buf_dispose(&winbuf);
......
...@@ -337,7 +337,7 @@ void test_merge_workdir_dirty__identical_staged_files_allowed(void) ...@@ -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]) { for (i = 0, content = result_contents[i]; content[0]; content = result_contents[++i]) {
stage_content(content); stage_content(content);
git_index_write(repo_index); cl_git_pass(git_index_write(repo_index));
cl_git_pass(merge_branch()); cl_git_pass(merge_branch());
} }
} }
......
...@@ -34,7 +34,7 @@ void test_stash_apply__initialize(void) ...@@ -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, "who"));
cl_git_pass(git_index_add_bypath(repo_index, "why")); cl_git_pass(git_index_add_bypath(repo_index, "why"));
cl_git_pass(git_index_add_bypath(repo_index, "where")); 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"); cl_git_rewritefile("stash/where", "....\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment