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

Re: [PATCH] rebase: exec leaks GIT_DIR to environment

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Oct 30, 2017, 12:46 UTC
Message-ID
<alpine.DEB.2.21.1.1710301343000.6482@virtualbox>
In-Reply-To
<7026e5be-bbf0-9d55-8901-f920a775879b@talktalk.net>
Hi Phillip,
On Mon, 30 Oct 2017, Phillip Wood wrote:
Show 28 quoted lines
> On 30/10/17 06:26, Jacob Keller wrote:
> > On Sun, Oct 29, 2017 at 8:36 PM, Junio C Hamano <gitster@pobox.com> wrote:
> >> Jacob Keller <jacob.keller@gmail.com> writes:
> >>
> >>> I am pretty confident we can fix it....
> >>
> >> I am sure we can eventually, but 3 hours is not enough soak time.
> >>
> >> I am inclined to leave the fix for 2.15.1/2.16.0 instead of delaying
> >> the release by 10 more days.
> > 
> > That's fair. I'm not even sure it was introduced since the last
> > release (I tried 2.12, but not 2.13 or 2.14 manually). Thus, it likely
> > wasn't noticed for at least a release, meaning it's less important (to
> > me at least) that we provide a fix immediately, since it went
> > unnoticed this long, likely that means few people will be impacted.
> 
> It is in 2.14.3, I haven't bisected but I suspect it was introduced by
> 311af5266b sequencer (rebase -i): implement the 'exec' command
> 
> Running
> git rebase -x'perl -e '\''$,=$\="\n"; print  grep { /^GIT_/ } sort keys
> %ENV'\' @
> Shows that the rebase--helper version also sets GIT_PREFIX as well as
> GIT_DIR, I suspect the difference is coming from differences in the
> setup for builtin commands vs external commands. The shell version and
> the rebase--helper version set GIT_CHERRY_PICK_HELP, GIT_EDITOR,
> GIT_INTERNAL_GETTEXT_SH_SCHEME, GIT_REFLOG_ACTION

Indeed, when you look at git_dir_init in git-sh-setup, you will see that Unix shell scripts explicitly get their GIT_DIR turned into an absolute path.

So my suggested patch is wrong, and it should be more along the lines of
	struct strbuf buf = STRBUF_INIT;
	const char *child_env[] = { NULL, NULL };
	strbuf_addf(&buf, "GIT_DIR=%s", absolute_path(get_git_dir()));
	child_env[0] = buf.buf;
	...
	strbuf_release(&buf);
Jake, can I still take you up on taking it from here?

Ciao, Dscho

Previous: Phillip WoodNext: Jacob Keller
Message 10 of 12 in “rebase: exec leaks GIT_DIR to environment”
  1. rebase: exec leaks GIT_DIR to environmentJacob Keller, Oct 28, 2017
  2. Johannes SchindelinOct 28, 2017
  3. Jacob KellerOct 28, 2017
  4. Phillip WoodOct 29, 2017
  5. Junio C HamanoOct 30, 2017
  6. Jacob KellerOct 30, 2017
  7. Junio C HamanoOct 30, 2017
  8. Jacob KellerOct 30, 2017
  9. Phillip WoodOct 30, 2017
  10. Johannes SchindelinOct 30, 2017
  11. Jacob KellerOct 31, 2017
  12. Jacob KellerOct 30, 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.