# [PATCH] completion: don't leak variable from the prompt into environment

3 messages from 2011-11-09 to 2011-11-09. Participants: SZEDER Gábor, Junio C Hamano.
Thread: https://gitlist.dev/t/28893

## SZEDER Gábor, 2011-11-09 10:02

Subject: [PATCH] completion: don't leak variable from the prompt into environment
Message-ID: <1320832970-26239-1-git-send-email-szeder@ira.uka.de>
URL: https://gitlist.dev/e/1320832970-26239-1-git-send-email-szeder%40ira.uka.de

```
Commit e5b8eebc (completion: fix issue with process substitution not
working on Git for Windows, 2011-10-26) introduced a new variable in
__git_ps1_show_upstream(), but didn't declare it as local to prevent
it from leaking into the environment.
---
 contrib/completion/git-completion.bash |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index b3571ab4..d18895b1 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -110,7 +110,7 @@ __git_ps1_show_upstream ()
 	local upstream=git legacy="" verbose=""
 
 	# get some config options from git-config
-	output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
+	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
 	while read key value; do
 		case "$key" in
 		bash.showupstream)
-- 
1.7.8.rc0.107.g695cb

```

## Junio C Hamano, 2011-11-09 13:11

Subject: Re: [PATCH] completion: don't leak variable from the prompt into environment
Message-ID: <7vd3d1widd.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vd3d1widd.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1320832970-26239-1-git-send-email-szeder@ira.uka.de>

```
SZEDER Gábor <szeder@ira.uka.de> writes:

> Commit e5b8eebc (completion: fix issue with process substitution not
> working on Git for Windows, 2011-10-26) introduced a new variable in
> __git_ps1_show_upstream(), but didn't declare it as local to prevent
> it from leaking into the environment.
> ---

Thanks; I'd consider this signed-off?

>  contrib/completion/git-completion.bash |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index b3571ab4..d18895b1 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -110,7 +110,7 @@ __git_ps1_show_upstream ()
>  	local upstream=git legacy="" verbose=""
>  
>  	# get some config options from git-config
> -	output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
> +	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
>  	while read key value; do
>  		case "$key" in
>  		bash.showupstream)

```

## SZEDER Gábor, 2011-11-09 13:26

Subject: Re: [PATCH] completion: don't leak variable from the prompt into environment
Message-ID: <20111109132649.GB2135@goldbirke>
URL: https://gitlist.dev/e/20111109132649.GB2135%40goldbirke
In-Reply-To: <7vd3d1widd.fsf@alter.siamese.dyndns.org>

```
Hi,

On Wed, Nov 09, 2011 at 05:11:26AM -0800, Junio C Hamano wrote:
> SZEDER Gábor <szeder@ira.uka.de> writes:
> 
> > Commit e5b8eebc (completion: fix issue with process substitution not
> > working on Git for Windows, 2011-10-26) introduced a new variable in
> > __git_ps1_show_upstream(), but didn't declare it as local to prevent
> > it from leaking into the environment.
> > ---
> 
> Thanks; I'd consider this signed-off?

Oops, yeah, sorry.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>


Just for the record:  I pointed this out when the patch was discussed
on the list, and proposed a better solution:

  http://thread.gmane.org/gmane.comp.version-control.git/184229/focus=184290

but apparently only after that patch was already merged.  Since we are
in -rc phase, this patch below chooses the less intrusive solution
(i.e. it declares the variable as local instead of eliminating it by
using the command substitution as here string).


Gábor


> 
> >  contrib/completion/git-completion.bash |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> > index b3571ab4..d18895b1 100755
> > --- a/contrib/completion/git-completion.bash
> > +++ b/contrib/completion/git-completion.bash
> > @@ -110,7 +110,7 @@ __git_ps1_show_upstream ()
> >  	local upstream=git legacy="" verbose=""
> >  
> >  	# get some config options from git-config
> > -	output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
> > +	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
> >  	while read key value; do
> >  		case "$key" in
> >  		bash.showupstream)

```
