summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2017-06-14 13:35:26 +0200
committerJunio C Hamano <gitster@pobox.com>2017-06-15 12:31:43 -0700
commit69743f9b4f8411853e347fbd392221552b43fd12 (patch)
treefd9dfba846d5ac17ec92d51dfbb3aab34a8c4878
parentb06d3643105c8758ed019125a4399cb7efdcce2c (diff)
downloadgit-69743f9b4f8411853e347fbd392221552b43fd12.tar.gz
discover_git_directory(): avoid setting invalid git_dir
When discovering a .git/ directory, we take pains to ensure that its repository format version matches Git's expectations, and we return NULL otherwise. However, we still appended the invalid path to the strbuf passed as argument. Let's just reset the strbuf to the state before we appended the .git/ directory that was eventually rejected. There is another early return path in that function, when setup_git_directory_gently_1() returns GIT_DIR_NONE or an error. In that case, the gitdir parameter has not been touched, therefore there is no need for an equivalent change in that code path. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--setup.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/setup.c b/setup.c
index 0309c27821..ba3241bf02 100644
--- a/setup.c
+++ b/setup.c
@@ -977,6 +977,7 @@ const char *discover_git_directory(struct strbuf *gitdir)
warning("ignoring git dir '%s': %s",
gitdir->buf + gitdir_offset, err.buf);
strbuf_release(&err);
+ strbuf_setlen(gitdir, gitdir_offset);
return NULL;
}