# [PATCH] gitweb: Fix export check in git_get_projects_list

4 messages from 2008-12-27 to 2008-12-29. Participants: Devin Doucette, Jakub Narebski, Junio C Hamano.
Thread: https://gitlist.dev/t/16882

## Devin Doucette, 2008-12-27 09:39

Subject: [PATCH] gitweb: Fix export check in git_get_projects_list
Message-ID: <a899d7ef0812270139u7dd28ee1q45a8c05f7c95db2f@mail.gmail.com>
URL: https://gitlist.dev/e/a899d7ef0812270139u7dd28ee1q45a8c05f7c95db2f%40mail.gmail.com

```
When $filter was empty, the path passed to check_export_ok would
contain an extra '/', which some implementations of export_auth_hook
are sensitive to.

It makes more sense to fix this here than to handle the special case
in each implementation of export_auth_hook.

Signed-off-by: Devin Doucette <devin@doucette.cc>
---
 gitweb/gitweb.perl |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 8f574c7..99f71b4 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -2147,8 +2147,9 @@ sub git_get_projects_list {

 				my $subdir = substr($File::Find::name, $pfxlen + 1);
 				# we check related file in $projectroot
-				if (check_export_ok("$projectroot/$filter/$subdir")) {
-					push @list, { path => ($filter ? "$filter/" : '') . $subdir };
+				my $path = ($filter ? "$filter/" : '') . $subdir;
+				if (check_export_ok("$projectroot/$path")) {
+					push @list, { path => $path };
 					$File::Find::prune = 1;
 				}
 			},
-- 
1.6.1.rc4

```

## Jakub Narebski, 2008-12-28 02:12

Subject: Re: [PATCH] gitweb: Fix export check in git_get_projects_list
Message-ID: <200812280312.02615.jnareb@gmail.com>
URL: https://gitlist.dev/e/200812280312.02615.jnareb%40gmail.com
In-Reply-To: <a899d7ef0812270139u7dd28ee1q45a8c05f7c95db2f@mail.gmail.com>

```
On Sat, 27 Dec 2008, Devin Doucette wrote:

> When $filter was empty, the path passed to check_export_ok would
> contain an extra '/', which some implementations of export_auth_hook
> are sensitive to.
> 
> It makes more sense to fix this here than to handle the special case
> in each implementation of export_auth_hook.
> 
> Signed-off-by: Devin Doucette <devin@doucette.cc>

Good catch. Thanks.

Acked-by: Jakub Narebski <jnareb@gmail.com>

> ---
>  gitweb/gitweb.perl |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 8f574c7..99f71b4 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -2147,8 +2147,9 @@ sub git_get_projects_list {
> 
>  				my $subdir = substr($File::Find::name, $pfxlen + 1);
>  				# we check related file in $projectroot
> -				if (check_export_ok("$projectroot/$filter/$subdir")) {
> -					push @list, { path => ($filter ? "$filter/" : '') . $subdir };
> +				my $path = ($filter ? "$filter/" : '') . $subdir;

Nice and clear, but wouldn't be better to use slightly more effective

+				my $path = $filter ? "$filter/$subdir" : $subdir;

Or even, taking care of the case when $filter eq '0'

+				my $path = defined $filter && $filter ne '' ? "$filter/$subdir" : $subdir;

> +				if (check_export_ok("$projectroot/$path")) {
> +					push @list, { path => $path };
>  					$File::Find::prune = 1;
>  				}
>  			},
> -- 
> 1.6.1.rc4
> 

-- 
Jakub Narebski
Poland

```

## Junio C Hamano, 2008-12-28 06:54

Subject: Re: [PATCH] gitweb: Fix export check in git_get_projects_list
Message-ID: <7vk59kaixf.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vk59kaixf.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <200812280312.02615.jnareb@gmail.com>

```
Jakub Narebski <jnareb@gmail.com> writes:

> On Sat, 27 Dec 2008, Devin Doucette wrote:
>
>> When $filter was empty, the path passed to check_export_ok would
>> contain an extra '/', which some implementations of export_auth_hook
>> are sensitive to.
>> 
>> It makes more sense to fix this here than to handle the special case
>> in each implementation of export_auth_hook.
>> 
>> Signed-off-by: Devin Doucette <devin@doucette.cc>
>
> Good catch. Thanks.

Thanks, both.  Will queue for 'maint'.

```

## Jakub Narebski, 2008-12-29 12:29

Subject: Re: [PATCH] gitweb: Fix export check in git_get_projects_list
Message-ID: <200812291329.28701.jnareb@gmail.com>
URL: https://gitlist.dev/e/200812291329.28701.jnareb%40gmail.com
In-Reply-To: <200812280312.02615.jnareb@gmail.com>

```
On Sun, 28 Dec 2008, Jakub Narebski wrote:
> On Sat, 27 Dec 2008, Devin Doucette wrote:

> > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> > index 8f574c7..99f71b4 100755
> > --- a/gitweb/gitweb.perl
> > +++ b/gitweb/gitweb.perl
> > @@ -2147,8 +2147,9 @@ sub git_get_projects_list {
> > 
> >  				my $subdir = substr($File::Find::name, $pfxlen + 1);
> >  				# we check related file in $projectroot
> > -				if (check_export_ok("$projectroot/$filter/$subdir")) {
> > -					push @list, { path => ($filter ? "$filter/" : '') . $subdir };
> > +				my $path = ($filter ? "$filter/" : '') . $subdir;
> 
> Nice and clear, but wouldn't be better to use slightly more effective
> 
> +				my $path = $filter ? "$filter/$subdir" : $subdir;
> 
> Or even, taking care of the case when $filter eq '0'
> 
> +				my $path = defined $filter && $filter ne '' ? "$filter/$subdir" : $subdir;

Err, actually with "$filter ||= '';" earlier in git_get_projects_list
this is not necessary, and is not an improvement.
 
-- 
Jakub Narebski
Poland

```
