Unverified Commit 8aa04a37 by Patrick Steinhardt Committed by GitHub

Merge pull request #5391 from pks-t/pks/coverity-fixes

Coverity fixes
parents 17223902 b3b92e09
...@@ -208,10 +208,14 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry) ...@@ -208,10 +208,14 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
entry = stored_entry; entry = stored_entry;
} else if (stored_entry->flags == GIT_CACHE_STORE_RAW && } else if (stored_entry->flags == GIT_CACHE_STORE_RAW &&
entry->flags == GIT_CACHE_STORE_PARSED) { entry->flags == GIT_CACHE_STORE_PARSED) {
git_cached_obj_decref(stored_entry); if (git_oidmap_set(cache->map, &entry->oid, entry) == 0) {
git_cached_obj_incref(entry); git_cached_obj_decref(stored_entry);
git_cached_obj_incref(entry);
git_oidmap_set(cache->map, &entry->oid, entry); } else {
git_cached_obj_decref(entry);
git_cached_obj_incref(stored_entry);
entry = stored_entry;
}
} else { } else {
/* NO OP */ /* NO OP */
} }
......
...@@ -150,11 +150,11 @@ int git_indexer_new( ...@@ -150,11 +150,11 @@ int git_indexer_new(
idx->progress_cb = opts.progress_cb; idx->progress_cb = opts.progress_cb;
idx->progress_payload = opts.progress_cb_payload; idx->progress_payload = opts.progress_cb_payload;
idx->mode = mode ? mode : GIT_PACK_FILE_MODE; idx->mode = mode ? mode : GIT_PACK_FILE_MODE;
git_hash_ctx_init(&idx->hash_ctx);
git_hash_ctx_init(&idx->trailer);
git_buf_init(&idx->entry_data, 0); git_buf_init(&idx->entry_data, 0);
if ((error = git_oidmap_new(&idx->expected_oids)) < 0) if ((error = git_hash_ctx_init(&idx->hash_ctx)) < 0 ||
(error = git_hash_ctx_init(&idx->trailer)) < 0 ||
(error = git_oidmap_new(&idx->expected_oids)) < 0)
goto cleanup; goto cleanup;
idx->do_verify = opts.verify; idx->do_verify = opts.verify;
......
...@@ -808,8 +808,11 @@ int git_note_next( ...@@ -808,8 +808,11 @@ int git_note_next(
git_oid_cpy(note_id, &item->id); git_oid_cpy(note_id, &item->id);
if (!(error = process_entry_path(item->path, annotated_id))) if ((error = process_entry_path(item->path, annotated_id)) < 0)
git_iterator_advance(NULL, it); return error;
return error; if ((error = git_iterator_advance(NULL, it)) < 0 && error != GIT_ITEROVER)
return error;
return 0;
} }
...@@ -374,7 +374,9 @@ static int write_object( ...@@ -374,7 +374,9 @@ static int write_object(
GIT_ERROR_CHECK_ALLOC(zbuf); GIT_ERROR_CHECK_ALLOC(zbuf);
git_zstream_reset(&pb->zstream); git_zstream_reset(&pb->zstream);
git_zstream_set_input(&pb->zstream, data, data_len);
if ((error = git_zstream_set_input(&pb->zstream, data, data_len)) < 0)
goto done;
while (!git_zstream_done(&pb->zstream)) { while (!git_zstream_done(&pb->zstream)) {
if ((error = git_zstream_get_output(zbuf, &zbuf_len, &pb->zstream)) < 0 || if ((error = git_zstream_get_output(zbuf, &zbuf_len, &pb->zstream)) < 0 ||
......
...@@ -349,8 +349,9 @@ static int queue_objects(git_push *push) ...@@ -349,8 +349,9 @@ static int queue_objects(git_push *push)
if (git_oid_is_zero(&head->oid)) if (git_oid_is_zero(&head->oid))
continue; continue;
/* TODO */ if ((error = git_revwalk_hide(rw, &head->oid)) < 0 &&
git_revwalk_hide(rw, &head->oid); error != GIT_ENOTFOUND && error != GIT_EINVALIDSPEC && error != GIT_EPEEL)
goto on_error;
} }
error = git_packbuilder_insert_walk(push->pb, rw); error = git_packbuilder_insert_walk(push->pb, rw);
......
...@@ -189,19 +189,25 @@ void git_repository_free(git_repository *repo) ...@@ -189,19 +189,25 @@ void git_repository_free(git_repository *repo)
* *
* Open a repository object from its path * Open a repository object from its path
*/ */
static bool valid_repository_path(git_buf *repository_path, git_buf *common_path) static int is_valid_repository_path(bool *out, git_buf *repository_path, git_buf *common_path)
{ {
int error;
*out = false;
/* Check if we have a separate commondir (e.g. we have a /* Check if we have a separate commondir (e.g. we have a
* worktree) */ * worktree) */
if (git_path_contains_file(repository_path, GIT_COMMONDIR_FILE)) { if (git_path_contains_file(repository_path, GIT_COMMONDIR_FILE)) {
git_buf common_link = GIT_BUF_INIT; git_buf common_link = GIT_BUF_INIT;
git_buf_joinpath(&common_link, repository_path->ptr, GIT_COMMONDIR_FILE);
git_futils_readbuffer(&common_link, common_link.ptr); if ((error = git_buf_joinpath(&common_link, repository_path->ptr, GIT_COMMONDIR_FILE)) < 0 ||
git_buf_rtrim(&common_link); (error = git_futils_readbuffer(&common_link, common_link.ptr)) < 0)
return error;
git_buf_rtrim(&common_link);
if (git_path_is_relative(common_link.ptr)) { if (git_path_is_relative(common_link.ptr)) {
git_buf_joinpath(common_path, repository_path->ptr, common_link.ptr); if ((error = git_buf_joinpath(common_path, repository_path->ptr, common_link.ptr)) < 0)
return error;
} else { } else {
git_buf_swap(common_path, &common_link); git_buf_swap(common_path, &common_link);
} }
...@@ -209,24 +215,26 @@ static bool valid_repository_path(git_buf *repository_path, git_buf *common_path ...@@ -209,24 +215,26 @@ static bool valid_repository_path(git_buf *repository_path, git_buf *common_path
git_buf_dispose(&common_link); git_buf_dispose(&common_link);
} }
else { else {
git_buf_set(common_path, repository_path->ptr, repository_path->size); if ((error = git_buf_set(common_path, repository_path->ptr, repository_path->size)) < 0)
return error;
} }
/* Make sure the commondir path always has a trailing * slash */ /* Make sure the commondir path always has a trailing * slash */
if (git_buf_rfind(common_path, '/') != (ssize_t)common_path->size - 1) if (git_buf_rfind(common_path, '/') != (ssize_t)common_path->size - 1)
git_buf_putc(common_path, '/'); if ((error = git_buf_putc(common_path, '/')) < 0)
return error;
/* Ensure HEAD file exists */ /* Ensure HEAD file exists */
if (git_path_contains_file(repository_path, GIT_HEAD_FILE) == false) if (git_path_contains_file(repository_path, GIT_HEAD_FILE) == false)
return false; return 0;
/* Check files in common dir */ /* Check files in common dir */
if (git_path_contains_dir(common_path, GIT_OBJECTS_DIR) == false) if (git_path_contains_dir(common_path, GIT_OBJECTS_DIR) == false)
return false; return 0;
if (git_path_contains_dir(common_path, GIT_REFS_DIR) == false) if (git_path_contains_dir(common_path, GIT_REFS_DIR) == false)
return false; return 0;
return true; *out = true;
return 0;
} }
static git_repository *repository_alloc(void) static git_repository *repository_alloc(void)
...@@ -441,15 +449,15 @@ static int find_repo( ...@@ -441,15 +449,15 @@ static int find_repo(
uint32_t flags, uint32_t flags,
const char *ceiling_dirs) const char *ceiling_dirs)
{ {
int error;
git_buf path = GIT_BUF_INIT; git_buf path = GIT_BUF_INIT;
git_buf repo_link = GIT_BUF_INIT; git_buf repo_link = GIT_BUF_INIT;
git_buf common_link = GIT_BUF_INIT; git_buf common_link = GIT_BUF_INIT;
struct stat st; struct stat st;
dev_t initial_device = 0; dev_t initial_device = 0;
int min_iterations; int min_iterations;
bool in_dot_git; bool in_dot_git, is_valid;
size_t ceiling_offset = 0; size_t ceiling_offset = 0;
int error;
git_buf_clear(gitdir_path); git_buf_clear(gitdir_path);
...@@ -475,9 +483,8 @@ static int find_repo( ...@@ -475,9 +483,8 @@ static int find_repo(
for (;;) { for (;;) {
if (!(flags & GIT_REPOSITORY_OPEN_NO_DOTGIT)) { if (!(flags & GIT_REPOSITORY_OPEN_NO_DOTGIT)) {
if (!in_dot_git) { if (!in_dot_git) {
error = git_buf_joinpath(&path, path.ptr, DOT_GIT); if ((error = git_buf_joinpath(&path, path.ptr, DOT_GIT)) < 0)
if (error < 0) goto out;
break;
} }
in_dot_git = !in_dot_git; in_dot_git = !in_dot_git;
} }
...@@ -491,28 +498,33 @@ static int find_repo( ...@@ -491,28 +498,33 @@ static int find_repo(
break; break;
if (S_ISDIR(st.st_mode)) { if (S_ISDIR(st.st_mode)) {
if (valid_repository_path(&path, &common_link)) { if ((error = is_valid_repository_path(&is_valid, &path, &common_link)) < 0)
git_path_to_dir(&path); goto out;
git_buf_set(gitdir_path, path.ptr, path.size);
if (is_valid) {
if ((error = git_path_to_dir(&path)) < 0 ||
(error = git_buf_set(gitdir_path, path.ptr, path.size)) < 0)
goto out;
if (gitlink_path) if (gitlink_path)
git_buf_attach(gitlink_path, if ((error = git_buf_attach(gitlink_path, git_worktree__read_link(path.ptr, GIT_GITDIR_FILE), 0)) < 0)
git_worktree__read_link(path.ptr, GIT_GITDIR_FILE), 0); goto out;
if (commondir_path) if (commondir_path)
git_buf_swap(&common_link, commondir_path); git_buf_swap(&common_link, commondir_path);
break; break;
} }
} } else if (S_ISREG(st.st_mode) && git__suffixcmp(path.ptr, "/" DOT_GIT) == 0) {
else if (S_ISREG(st.st_mode) && git__suffixcmp(path.ptr, "/" DOT_GIT) == 0) { if ((error = read_gitfile(&repo_link, path.ptr)) < 0 ||
error = read_gitfile(&repo_link, path.ptr); (error = is_valid_repository_path(&is_valid, &repo_link, &common_link)) < 0)
if (error < 0) goto out;
break;
if (valid_repository_path(&repo_link, &common_link)) { if (is_valid) {
git_buf_swap(gitdir_path, &repo_link); git_buf_swap(gitdir_path, &repo_link);
if (gitlink_path) if (gitlink_path)
error = git_buf_put(gitlink_path, path.ptr, path.size); if ((error = git_buf_put(gitlink_path, path.ptr, path.size)) < 0)
goto out;
if (commondir_path) if (commondir_path)
git_buf_swap(&common_link, commondir_path); git_buf_swap(&common_link, commondir_path);
} }
...@@ -523,10 +535,8 @@ static int find_repo( ...@@ -523,10 +535,8 @@ static int find_repo(
/* Move up one directory. If we're in_dot_git, we'll search the /* Move up one directory. If we're in_dot_git, we'll search the
* parent itself next. If we're !in_dot_git, we'll search .git * parent itself next. If we're !in_dot_git, we'll search .git
* in the parent directory next (added at the top of the loop). */ * in the parent directory next (added at the top of the loop). */
if (git_path_dirname_r(&path, path.ptr) < 0) { if ((error = git_path_dirname_r(&path, path.ptr)) < 0)
error = -1; goto out;
break;
}
/* Once we've checked the directory (and .git if applicable), /* Once we've checked the directory (and .git if applicable),
* find the ceiling for a search. */ * find the ceiling for a search. */
...@@ -534,31 +544,28 @@ static int find_repo( ...@@ -534,31 +544,28 @@ static int find_repo(
ceiling_offset = find_ceiling_dir_offset(path.ptr, ceiling_dirs); ceiling_offset = find_ceiling_dir_offset(path.ptr, ceiling_dirs);
/* Check if we should stop searching here. */ /* Check if we should stop searching here. */
if (min_iterations == 0 if (min_iterations == 0 &&
&& (path.ptr[ceiling_offset] == 0 (path.ptr[ceiling_offset] == 0 || (flags & GIT_REPOSITORY_OPEN_NO_SEARCH)))
|| (flags & GIT_REPOSITORY_OPEN_NO_SEARCH)))
break; break;
} }
if (!error && workdir_path && !(flags & GIT_REPOSITORY_OPEN_BARE)) { if (workdir_path && !(flags & GIT_REPOSITORY_OPEN_BARE)) {
if (!git_buf_len(gitdir_path)) if (!git_buf_len(gitdir_path))
git_buf_clear(workdir_path); git_buf_clear(workdir_path);
else { else if ((error = git_path_dirname_r(workdir_path, path.ptr)) < 0 ||
git_path_dirname_r(workdir_path, path.ptr); (error = git_path_to_dir(workdir_path)) < 0)
git_path_to_dir(workdir_path); goto out;
}
if (git_buf_oom(workdir_path))
return -1;
} }
/* If we didn't find the repository, and we don't have any other error /* If we didn't find the repository, and we don't have any other error
* to report, report that. */ * to report, report that. */
if (!git_buf_len(gitdir_path) && !error) { if (!git_buf_len(gitdir_path)) {
git_error_set(GIT_ERROR_REPOSITORY, git_error_set(GIT_ERROR_REPOSITORY, "could not find repository from '%s'", start_path);
"could not find repository from '%s'", start_path);
error = GIT_ENOTFOUND; error = GIT_ENOTFOUND;
goto out;
} }
out:
git_buf_dispose(&path); git_buf_dispose(&path);
git_buf_dispose(&repo_link); git_buf_dispose(&repo_link);
git_buf_dispose(&common_link); git_buf_dispose(&common_link);
...@@ -569,14 +576,16 @@ int git_repository_open_bare( ...@@ -569,14 +576,16 @@ int git_repository_open_bare(
git_repository **repo_ptr, git_repository **repo_ptr,
const char *bare_path) const char *bare_path)
{ {
int error;
git_buf path = GIT_BUF_INIT, common_path = GIT_BUF_INIT; git_buf path = GIT_BUF_INIT, common_path = GIT_BUF_INIT;
git_repository *repo = NULL; git_repository *repo = NULL;
bool is_valid;
int error;
if ((error = git_path_prettify_dir(&path, bare_path, NULL)) < 0) if ((error = git_path_prettify_dir(&path, bare_path, NULL)) < 0 ||
(error = is_valid_repository_path(&is_valid, &path, &common_path)) < 0)
return error; return error;
if (!valid_repository_path(&path, &common_path)) { if (!is_valid) {
git_buf_dispose(&path); git_buf_dispose(&path);
git_buf_dispose(&common_path); git_buf_dispose(&common_path);
git_error_set(GIT_ERROR_REPOSITORY, "path is not a repository: %s", bare_path); git_error_set(GIT_ERROR_REPOSITORY, "path is not a repository: %s", bare_path);
...@@ -2055,6 +2064,7 @@ int git_repository_init_ext( ...@@ -2055,6 +2064,7 @@ int git_repository_init_ext(
git_buf repo_path = GIT_BUF_INIT, wd_path = GIT_BUF_INIT, git_buf repo_path = GIT_BUF_INIT, wd_path = GIT_BUF_INIT,
common_path = GIT_BUF_INIT, head_path = GIT_BUF_INIT; common_path = GIT_BUF_INIT, head_path = GIT_BUF_INIT;
const char *wd; const char *wd;
bool is_valid;
int error; int error;
assert(out && given_repo && opts); assert(out && given_repo && opts);
...@@ -2066,7 +2076,10 @@ int git_repository_init_ext( ...@@ -2066,7 +2076,10 @@ int git_repository_init_ext(
wd = (opts->flags & GIT_REPOSITORY_INIT_BARE) ? NULL : git_buf_cstr(&wd_path); wd = (opts->flags & GIT_REPOSITORY_INIT_BARE) ? NULL : git_buf_cstr(&wd_path);
if (valid_repository_path(&repo_path, &common_path)) { if ((error = is_valid_repository_path(&is_valid, &repo_path, &common_path)) < 0)
goto out;
if (is_valid) {
if ((opts->flags & GIT_REPOSITORY_INIT_NO_REINIT) != 0) { if ((opts->flags & GIT_REPOSITORY_INIT_NO_REINIT) != 0) {
git_error_set(GIT_ERROR_REPOSITORY, git_error_set(GIT_ERROR_REPOSITORY,
"attempt to reinitialize '%s'", given_repo); "attempt to reinitialize '%s'", given_repo);
......
...@@ -58,7 +58,7 @@ int git_revwalk__push_commit(git_revwalk *walk, const git_oid *oid, const git_re ...@@ -58,7 +58,7 @@ int git_revwalk__push_commit(git_revwalk *walk, const git_oid *oid, const git_re
return 0; return 0;
git_error_set(GIT_ERROR_INVALID, "object is not a committish"); git_error_set(GIT_ERROR_INVALID, "object is not a committish");
return -1; return error;
} }
if (error < 0) if (error < 0)
return error; return error;
......
...@@ -156,7 +156,7 @@ static void openssl_locking_function( ...@@ -156,7 +156,7 @@ static void openssl_locking_function(
lock = mode & CRYPTO_LOCK; lock = mode & CRYPTO_LOCK;
if (lock) { if (lock) {
git_mutex_lock(&openssl_locks[n]); (void)git_mutex_lock(&openssl_locks[n]);
} else { } else {
git_mutex_unlock(&openssl_locks[n]); git_mutex_unlock(&openssl_locks[n]);
} }
......
...@@ -136,11 +136,11 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char ...@@ -136,11 +136,11 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
goto out; goto out;
} }
if ((wt->name = git__strdup(name)) == NULL if ((wt->name = git__strdup(name)) == NULL ||
|| (wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL (wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL ||
|| (wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL (wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL ||
|| (parent && (wt->parent_path = git__strdup(parent)) == NULL) (parent && (wt->parent_path = git__strdup(parent)) == NULL) ||
|| (wt->worktree_path = git_path_dirname(wt->gitlink_path)) == NULL) { (wt->worktree_path = git_path_dirname(wt->gitlink_path)) == NULL) {
error = -1; error = -1;
goto out; goto out;
} }
...@@ -149,7 +149,10 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char ...@@ -149,7 +149,10 @@ static int open_worktree_dir(git_worktree **out, const char *parent, const char
goto out; goto out;
wt->gitdir_path = git_buf_detach(&gitdir); wt->gitdir_path = git_buf_detach(&gitdir);
wt->locked = !!git_worktree_is_locked(NULL, wt); if ((error = git_worktree_is_locked(NULL, wt)) < 0)
goto out;
wt->locked = !!error;
error = 0;
*out = wt; *out = wt;
...@@ -403,20 +406,24 @@ out: ...@@ -403,20 +406,24 @@ out:
int git_worktree_lock(git_worktree *wt, const char *reason) int git_worktree_lock(git_worktree *wt, const char *reason)
{ {
git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT; git_buf buf = GIT_BUF_INIT, path = GIT_BUF_INIT;
int err; int error;
assert(wt); assert(wt);
if ((err = git_worktree_is_locked(NULL, wt)) < 0) if ((error = git_worktree_is_locked(NULL, wt)) < 0)
goto out;
if (error) {
error = GIT_ELOCKED;
goto out; goto out;
}
if ((err = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0) if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
goto out; goto out;
if (reason) if (reason)
git_buf_attach_notowned(&buf, reason, strlen(reason)); git_buf_attach_notowned(&buf, reason, strlen(reason));
if ((err = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0) if ((error = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
goto out; goto out;
wt->locked = 1; wt->locked = 1;
...@@ -424,16 +431,19 @@ int git_worktree_lock(git_worktree *wt, const char *reason) ...@@ -424,16 +431,19 @@ int git_worktree_lock(git_worktree *wt, const char *reason)
out: out:
git_buf_dispose(&path); git_buf_dispose(&path);
return err; return error;
} }
int git_worktree_unlock(git_worktree *wt) int git_worktree_unlock(git_worktree *wt)
{ {
git_buf path = GIT_BUF_INIT; git_buf path = GIT_BUF_INIT;
int error;
assert(wt); assert(wt);
if (!git_worktree_is_locked(NULL, wt)) if ((error = git_worktree_is_locked(NULL, wt)) < 0)
return error;
if (!error)
return 1; return 1;
if (git_buf_joinpath(&path, wt->gitdir_path, "locked") < 0) if (git_buf_joinpath(&path, wt->gitdir_path, "locked") < 0)
...@@ -454,22 +464,25 @@ int git_worktree_unlock(git_worktree *wt) ...@@ -454,22 +464,25 @@ int git_worktree_unlock(git_worktree *wt)
int git_worktree_is_locked(git_buf *reason, const git_worktree *wt) int git_worktree_is_locked(git_buf *reason, const git_worktree *wt)
{ {
git_buf path = GIT_BUF_INIT; git_buf path = GIT_BUF_INIT;
int ret; int error, locked;
assert(wt); assert(wt);
if (reason) if (reason)
git_buf_clear(reason); git_buf_clear(reason);
if ((ret = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0) if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
goto out;
locked = git_path_exists(path.ptr);
if (locked && reason &&
(error = git_futils_readbuffer(reason, path.ptr)) < 0)
goto out; goto out;
if ((ret = git_path_exists(path.ptr)) && reason)
git_futils_readbuffer(reason, path.ptr);
error = locked;
out: out:
git_buf_dispose(&path); git_buf_dispose(&path);
return ret; return error;
} }
const char *git_worktree_name(const git_worktree *wt) const char *git_worktree_name(const git_worktree *wt)
...@@ -502,7 +515,6 @@ int git_worktree_pruneinit_options(git_worktree_prune_options *opts, ...@@ -502,7 +515,6 @@ int git_worktree_pruneinit_options(git_worktree_prune_options *opts,
int git_worktree_is_prunable(git_worktree *wt, int git_worktree_is_prunable(git_worktree *wt,
git_worktree_prune_options *opts) git_worktree_prune_options *opts)
{ {
git_buf reason = GIT_BUF_INIT;
git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT; git_worktree_prune_options popts = GIT_WORKTREE_PRUNE_OPTIONS_INIT;
GIT_ERROR_CHECK_VERSION( GIT_ERROR_CHECK_VERSION(
...@@ -512,20 +524,24 @@ int git_worktree_is_prunable(git_worktree *wt, ...@@ -512,20 +524,24 @@ int git_worktree_is_prunable(git_worktree *wt,
if (opts) if (opts)
memcpy(&popts, opts, sizeof(popts)); memcpy(&popts, opts, sizeof(popts));
if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0 && if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0) {
git_worktree_is_locked(&reason, wt)) git_buf reason = GIT_BUF_INIT;
{ int error;
if (!reason.size)
git_buf_attach_notowned(&reason, "no reason given", 15);
git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
git_buf_dispose(&reason);
return 0; if ((error = git_worktree_is_locked(&reason, wt)) < 0)
return error;
if (error) {
if (!reason.size)
git_buf_attach_notowned(&reason, "no reason given", 15);
git_error_set(GIT_ERROR_WORKTREE, "not pruning locked working tree: '%s'", reason.ptr);
git_buf_dispose(&reason);
return 0;
}
} }
if ((popts.flags & GIT_WORKTREE_PRUNE_VALID) == 0 && if ((popts.flags & GIT_WORKTREE_PRUNE_VALID) == 0 &&
git_worktree_validate(wt) == 0) git_worktree_validate(wt) == 0) {
{
git_error_set(GIT_ERROR_WORKTREE, "not pruning valid working tree"); git_error_set(GIT_ERROR_WORKTREE, "not pruning valid working tree");
return 0; return 0;
} }
......
...@@ -31,13 +31,13 @@ void check_blame_hunk_index(git_repository *repo, git_blame *blame, int idx, ...@@ -31,13 +31,13 @@ void check_blame_hunk_index(git_repository *repo, git_blame *blame, int idx,
} }
if (hunk->final_start_line_number != start_line) { if (hunk->final_start_line_number != start_line) {
hunk_message(idx, hunk, "mismatched start line number: expected %d, got %d", hunk_message(idx, hunk, "mismatched start line number: expected %"PRIuZ", got %"PRIuZ,
start_line, hunk->final_start_line_number); start_line, hunk->final_start_line_number);
} }
cl_assert_equal_i(hunk->final_start_line_number, start_line); cl_assert_equal_i(hunk->final_start_line_number, start_line);
if (hunk->lines_in_hunk != len) { if (hunk->lines_in_hunk != len) {
hunk_message(idx, hunk, "mismatched line count: expected %d, got %d", hunk_message(idx, hunk, "mismatched line count: expected %"PRIuZ", got %"PRIuZ,
len, hunk->lines_in_hunk); len, hunk->lines_in_hunk);
} }
cl_assert_equal_i(hunk->lines_in_hunk, len); cl_assert_equal_i(hunk->lines_in_hunk, len);
......
#include "clar_libgit2.h" #include "clar_libgit2.h"
#include "blame.h" #include "blame.h"
void hunk_message(size_t idx, const git_blame_hunk *hunk, const char *fmt, ...); void hunk_message(size_t idx, const git_blame_hunk *hunk, const char *fmt, ...) GIT_FORMAT_PRINTF(3, 4);
void check_blame_hunk_index( void check_blame_hunk_index(
git_repository *repo, git_repository *repo,
......
...@@ -81,7 +81,7 @@ void test_config_global__lock_missing_global_config(void) ...@@ -81,7 +81,7 @@ void test_config_global__lock_missing_global_config(void)
git_config_entry *entry; git_config_entry *entry;
git_transaction *transaction; git_transaction *transaction;
p_unlink("home/.gitconfig"); /* No global config */ (void)p_unlink("home/.gitconfig"); /* No global config */
cl_git_pass(git_config_open_default(&cfg)); cl_git_pass(git_config_open_default(&cfg));
cl_git_pass(git_config_lock(&transaction, cfg)); cl_git_pass(git_config_lock(&transaction, cfg));
......
...@@ -30,5 +30,5 @@ void test_config_new__write_new_config(void) ...@@ -30,5 +30,5 @@ void test_config_new__write_new_config(void)
git_buf_dispose(&buf); git_buf_dispose(&buf);
git_config_free(config); git_config_free(config);
p_unlink(TEST_CONFIG); cl_must_pass(p_unlink(TEST_CONFIG));
} }
...@@ -255,7 +255,7 @@ void test_ignore_path__globs_without_star(void) ...@@ -255,7 +255,7 @@ void test_ignore_path__globs_without_star(void)
void test_ignore_path__skip_gitignore_directory(void) void test_ignore_path__skip_gitignore_directory(void)
{ {
cl_git_rewritefile("attr/.git/info/exclude", "/NewFolder\n/NewFolder/NewFolder"); cl_git_rewritefile("attr/.git/info/exclude", "/NewFolder\n/NewFolder/NewFolder");
p_unlink("attr/.gitignore"); cl_must_pass(p_unlink("attr/.gitignore"));
cl_assert(!git_path_exists("attr/.gitignore")); cl_assert(!git_path_exists("attr/.gitignore"));
p_mkdir("attr/.gitignore", 0777); p_mkdir("attr/.gitignore", 0777);
cl_git_mkfile("attr/.gitignore/garbage.txt", "new_file\n"); cl_git_mkfile("attr/.gitignore/garbage.txt", "new_file\n");
...@@ -268,12 +268,11 @@ void test_ignore_path__skip_gitignore_directory(void) ...@@ -268,12 +268,11 @@ void test_ignore_path__skip_gitignore_directory(void)
void test_ignore_path__subdirectory_gitignore(void) void test_ignore_path__subdirectory_gitignore(void)
{ {
p_unlink("attr/.gitignore"); cl_must_pass(p_unlink("attr/.gitignore"));
cl_assert(!git_path_exists("attr/.gitignore")); cl_assert(!git_path_exists("attr/.gitignore"));
cl_git_mkfile( cl_git_mkfile(
"attr/.gitignore", "attr/.gitignore",
"file1\n"); "file1\n");
p_mkdir("attr/dir", 0777);
cl_git_mkfile( cl_git_mkfile(
"attr/dir/.gitignore", "attr/dir/.gitignore",
"file2/\n"); "file2/\n");
......
...@@ -54,7 +54,7 @@ static bool should_expect_nsecs(void) ...@@ -54,7 +54,7 @@ static bool should_expect_nsecs(void)
expect = try_create_file_with_nsec_timestamp(nsec_path.ptr); expect = try_create_file_with_nsec_timestamp(nsec_path.ptr);
p_unlink(nsec_path.ptr); cl_must_pass(p_unlink(nsec_path.ptr));
git_buf_dispose(&nsec_path); git_buf_dispose(&nsec_path);
......
...@@ -566,8 +566,7 @@ void test_index_tests__cannot_add_invalid_filename(void) ...@@ -566,8 +566,7 @@ void test_index_tests__cannot_add_invalid_filename(void)
{ {
git_repository *repo; git_repository *repo;
p_mkdir("invalid", 0700); cl_must_pass(p_mkdir("invalid", 0700));
cl_git_pass(git_repository_init(&repo, "./invalid", 0)); cl_git_pass(git_repository_init(&repo, "./invalid", 0));
cl_must_pass(p_mkdir("./invalid/subdir", 0777)); cl_must_pass(p_mkdir("./invalid/subdir", 0777));
......
...@@ -153,7 +153,7 @@ static void assert_invalid_rtransform(const char *refspec, const char *name) ...@@ -153,7 +153,7 @@ static void assert_invalid_rtransform(const char *refspec, const char *name)
git_refspec spec; git_refspec spec;
git_buf buf = GIT_BUF_INIT; git_buf buf = GIT_BUF_INIT;
git_refspec__parse(&spec, refspec, true); cl_git_pass(git_refspec__parse(&spec, refspec, true));
cl_git_fail(git_refspec_rtransform(&buf, &spec, name)); cl_git_fail(git_refspec_rtransform(&buf, &spec, name));
git_buf_dispose(&buf); git_buf_dispose(&buf);
......
...@@ -400,15 +400,11 @@ void test_notes_notes__can_read_a_note_from_a_commit(void) ...@@ -400,15 +400,11 @@ void test_notes_notes__can_read_a_note_from_a_commit(void)
git_note *note; git_note *note;
cl_git_pass(git_oid_fromstr(&oid, "4a202b346bb0fb0db7eff3cffeb3c70babbd2045")); cl_git_pass(git_oid_fromstr(&oid, "4a202b346bb0fb0db7eff3cffeb3c70babbd2045"));
cl_git_pass(git_note_commit_create(&notes_commit_oid, NULL, _repo, NULL, _sig, _sig, &oid, "I decorate 4a20\n", 1)); cl_git_pass(git_note_commit_create(&notes_commit_oid, NULL, _repo, NULL, _sig, _sig, &oid, "I decorate 4a20\n", 1));
cl_git_pass(git_commit_lookup(&notes_commit, _repo, &notes_commit_oid));
git_commit_lookup(&notes_commit, _repo, &notes_commit_oid);
cl_assert(notes_commit); cl_assert(notes_commit);
cl_git_pass(git_note_commit_read(&note, _repo, notes_commit, &oid)); cl_git_pass(git_note_commit_read(&note, _repo, notes_commit, &oid));
cl_assert_equal_s(git_note_message(note), "I decorate 4a20\n"); cl_assert_equal_s(git_note_message(note), "I decorate 4a20\n");
git_commit_free(notes_commit); git_commit_free(notes_commit);
...@@ -457,7 +453,7 @@ void test_notes_notes__can_insert_a_note_in_an_existing_fanout(void) ...@@ -457,7 +453,7 @@ void test_notes_notes__can_insert_a_note_in_an_existing_fanout(void)
git_note *_note; git_note *_note;
cl_git_pass(git_oid_fromstr(&target_oid, "08b041783f40edfe12bb406c9c9a8a040177c125")); cl_git_pass(git_oid_fromstr(&target_oid, "08b041783f40edfe12bb406c9c9a8a040177c125"));
for (i = 0; i < MESSAGES_COUNT; i++) { for (i = 0; i < MESSAGES_COUNT; i++) {
cl_git_pass(git_note_create(&note_oid, _repo, "refs/notes/fanout", _sig, _sig, &target_oid, messages[i], 0)); cl_git_pass(git_note_create(&note_oid, _repo, "refs/notes/fanout", _sig, _sig, &target_oid, messages[i], 0));
cl_git_pass(git_note_read(&_note, _repo, "refs/notes/fanout", &target_oid)); cl_git_pass(git_note_read(&_note, _repo, "refs/notes/fanout", &target_oid));
...@@ -511,7 +507,7 @@ void test_notes_notes__can_remove_a_note_from_commit(void) ...@@ -511,7 +507,7 @@ void test_notes_notes__can_remove_a_note_from_commit(void)
cl_git_pass(git_note_commit_create(&notes_commit_oid, NULL, _repo, NULL, _sig, _sig, &oid, "I decorate 4a20\n", 0)); cl_git_pass(git_note_commit_create(&notes_commit_oid, NULL, _repo, NULL, _sig, _sig, &oid, "I decorate 4a20\n", 0));
git_commit_lookup(&existing_notes_commit, _repo, &notes_commit_oid); cl_git_pass(git_commit_lookup(&existing_notes_commit, _repo, &notes_commit_oid));
cl_assert(existing_notes_commit); cl_assert(existing_notes_commit);
...@@ -547,7 +543,7 @@ void test_notes_notes__removing_a_note_which_doesnt_exists_returns_ENOTFOUND(voi ...@@ -547,7 +543,7 @@ void test_notes_notes__removing_a_note_which_doesnt_exists_returns_ENOTFOUND(voi
cl_git_pass(git_oid_fromstr(&target_oid, "8496071c1b46c854b31185ea97743be6a8774479")); cl_git_pass(git_oid_fromstr(&target_oid, "8496071c1b46c854b31185ea97743be6a8774479"));
cl_git_pass(git_note_remove(_repo, "refs/notes/fanout", _sig, _sig, &target_oid)); cl_git_pass(git_note_remove(_repo, "refs/notes/fanout", _sig, _sig, &target_oid));
error = git_note_remove(_repo, "refs/notes/fanout", _sig, _sig, &target_oid); error = git_note_remove(_repo, "refs/notes/fanout", _sig, _sig, &target_oid);
cl_git_fail(error); cl_git_fail(error);
cl_assert_equal_i(GIT_ENOTFOUND, error); cl_assert_equal_i(GIT_ENOTFOUND, error);
......
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