On 06/07, Johannes Schindelin wrote:
> 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.
> 
> Signed-off-by: Johannes Schindelin <johannes.schinde...@gmx.de>

Seems sane.  This way the strbuf is in the same state it was in before
calling this function (upon a failure that is).

> ---
>  setup.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/setup.c b/setup.c
> index e3f7699a902..2435186e448 100644
> --- a/setup.c
> +++ b/setup.c
> @@ -982,6 +982,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;

There is another part of this function that returns NULL (which isn't
shown by this diff) after performing 'setup_git_dir_gently_1', do we
need to worry about anything that 'setup_git_dir_gently_1' has
potentially appended to 'gitdir' upon 'setup_git_dir_gently_1' failing?

>       }
>  
> -- 
> 2.13.0.windows.1.460.g13f583bedb5
> 
> 

-- 
Brandon Williams

Reply via email to