summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Straub <bs@github.com>2014-02-01 19:29:48 -0800
committerBen Straub <bs@github.com>2014-02-01 19:31:26 -0800
commit7f058b86682e2a1566b192dfd1f0d333cc5b8c7c (patch)
tree4a05d30a7f13ce1e153a3422e0a250e8a8cfa8ff /src
parentee8e6afda9b33a1e20b7db67136cfb9cad9d7846 (diff)
downloadlibgit2-7f058b86682e2a1566b192dfd1f0d333cc5b8c7c.tar.gz
Check for errors when dereferencing symbolic refs
Diffstat (limited to 'src')
-rw-r--r--src/refdb_fs.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/refdb_fs.c b/src/refdb_fs.c
index 829e7c55a..89c77c14c 100644
--- a/src/refdb_fs.c
+++ b/src/refdb_fs.c
@@ -1452,8 +1452,12 @@ static int reflog_append(refdb_fs_backend *backend, const git_reference *ref, co
if (error < 0)
return error;
- if (git_reference_symbolic_target(ref) != NULL)
- git_reference_name_to_id(&new_id, repo, git_reference_symbolic_target(ref));
+ if (git_reference_symbolic_target(ref) != NULL) {
+ error = git_reference_name_to_id(&new_id, repo, git_reference_symbolic_target(ref));
+ if (error != 0 && error != GIT_ENOTFOUND)
+ goto cleanup;
+ giterr_clear();
+ }
else if (git_reference_target(ref) != NULL)
git_oid_cpy(&new_id, git_reference_target(ref));