git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/9] discover_git_directory(): avoid setting invalid git_dir

From
BWBrandon Williams <bmwill@google.com>
Date
Jun 7, 2017, 17:45 UTC
Message-ID
<20170607174529.GB110638@google.com>
In-Reply-To
<300d32d72b67f8c12b6cc91c36a5735a77f5ed89.1496851544.git.johannes.schindelin@gmx.de>
On 06/07, Johannes Schindelin wrote:
Show 11 quoted lines
> 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.schindelin@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).

Show 14 quoted lines
> ---
>  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?

Show 6 quoted lines
>  	}
>  
> -- 
> 2.13.0.windows.1.460.g13f583bedb5
> 
> 
-- 
Brandon Williams
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 3 of 34 in “Avoid problem where git_dir is set after alias expansion”
  1. 0/9 Avoid problem where git_dir is set after alias expansionJohannes Schindelin, Jun 7, 2017
  2. 1/9 discover_git_directory(): avoid setting invalid git_dirJohannes Schindelin, Jun 7, 2017
  3. Brandon WilliamsJun 7, 2017
  4. Johannes SchindelinJun 8, 2017
  5. 2/9 config: report correct line number upon errorJohannes Schindelin, Jun 7, 2017
  6. Junio C HamanoJun 9, 2017
  7. 3/9 help: use early config when autocorrecting aliasesJohannes Schindelin, Jun 7, 2017
  8. Brandon WilliamsJun 7, 2017
  9. Johannes SchindelinJun 8, 2017
  10. Junio C HamanoJun 9, 2017
  11. 4/9 read_early_config(): optionally return the worktree's top-level directoryJohannes Schindelin, Jun 7, 2017
  12. Brandon WilliamsJun 7, 2017
  13. Johannes SchindelinJun 8, 2017
  14. Brandon WilliamsJun 8, 2017
  15. Johannes SchindelinJun 8, 2017
  16. Brandon WilliamsJun 8, 2017
  17. Johannes SchindelinJun 8, 2017
  18. Brandon WilliamsJun 8, 2017
  19. 7/9 alias_lookup(): optionally return top-level directoryJohannes Schindelin, Jun 7, 2017
  20. 6/9 t7006: demonstrate a problem with aliases in subdirectoriesJohannes Schindelin, Jun 7, 2017
  21. 5/9 t1308: relax the test verifying that empty alias values are disallowedJohannes Schindelin, Jun 7, 2017
  22. Brandon WilliamsJun 7, 2017
  23. Johannes SchindelinJun 8, 2017
  24. Brandon WilliamsJun 8, 2017
  25. Junio C HamanoJun 10, 2017
  26. 8/9 Use the early config machinery to expand aliasesJohannes Schindelin, Jun 7, 2017
  27. Brandon WilliamsJun 7, 2017
  28. Johannes SchindelinJun 8, 2017
  29. Brandon WilliamsJun 8, 2017
  30. Junio C HamanoJun 10, 2017
  31. Johannes SchindelinJun 7, 2017
  32. Brandon WilliamsJun 7, 2017
  33. Johannes SchindelinJun 8, 2017
  34. Brandon WilliamsJun 8, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.