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

Re: [PATCH v2 2/4] use strbuf_getcwd() to get the current working directory without fixed-sized buffers

From
Jeff King <peff@peff.net>
Date
Jul 21, 2014, 02:33 UTC
Message-ID
<20140721023312.GC22750@peff.net>
In-Reply-To
<53CBF332.2050301@web.de>
On Sun, Jul 20, 2014 at 06:49:54PM +0200, René Scharfe wrote:
Show 16 quoted lines
> diff --git a/builtin/init-db.c b/builtin/init-db.c
> index 56f85e2..c4958b6 100644
> --- a/builtin/init-db.c
> +++ b/builtin/init-db.c
> @@ -535,10 +535,10 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
>  		usage(init_db_usage[0]);
>  	}
>  	if (is_bare_repository_cfg == 1) {
> -		static char git_dir[PATH_MAX+1];
> -
> -		setenv(GIT_DIR_ENVIRONMENT,
> -			getcwd(git_dir, sizeof(git_dir)), argc > 0);
> +		struct strbuf cwd = STRBUF_INIT;
> +		strbuf_getcwd(&cwd);
> +		setenv(GIT_DIR_ENVIRONMENT, cwd.buf, argc > 0);
> +		strbuf_release(&cwd);

Hmm. You are not making anything worse here, as we already do not check the return value of getcwd. But what happens if it fails? Looks like we currently get a segfault, and the new code will silently set the variable to the empty string. Neither is particularly helpful.

Should we be using the xgetcwd helper that you add in the next patch?
> -			setenv(GIT_DIR_ENVIRONMENT, getcwd(git_dir, sizeof(git_dir)), 0);
> +			strbuf_getcwd(&cwd);
> +			setenv(GIT_DIR_ENVIRONMENT, cwd.buf, 0);
> +			strbuf_release(&cwd);
Ditto here.
-Peff
Previous: René ScharfeNext: René Scharfe
Message 4 of 9 in “getcwd without PATH_MAX”
  1. 0/4 getcwd without PATH_MAXRené Scharfe, Jul 20, 2014
  2. 1/4 strbuf: add strbuf_getcwd()René Scharfe, Jul 20, 2014
  3. 2/4 use strbuf_getcwd() to get the current working directory without fixed-sized buffersRené Scharfe, Jul 20, 2014
  4. Jeff KingJul 21, 2014
  5. René ScharfeJul 21, 2014
  6. Jeff KingJul 22, 2014
  7. Junio C HamanoJul 21, 2014
  8. 3/4 wrapper: add xgetcwd()René Scharfe, Jul 20, 2014
  9. 4/4 use xgetcwd() get the current directory or dieRené Scharfe, Jul 20, 2014

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.