Subject: [PATCH] gitweb: git_get_project_config requires only $git_dir, not also $project

From: Jakub Narebski <[email-masked]>
Date: Sat, 27 Mar 2010 20:27:57 +0100

On Sat, 27 Mar 2010, Tobias Heinlein wrote:

> I stumbled upon a small bug in gitweb that was introduced by commit
> 9be3614eff36271d5f1cd460a568a219902cb044.
> 
> The projects list page is no longer able to display the projects'
> descriptions and owners properly when they are set in the git config
> file, e.g. like this:
> 
>   [gitweb]
>           owner = Tobias Heinlein
>           description = test
> 
> This is because git_get_project_owner() calls
> git_get_project_config('owner'):
> 
>   sub git_get_project_config {
>           my ($key, $type) = @_;
> 
>           # do we have project
>           return unless (defined $project && defined $git_dir);
> 
> At this point, $project is not defined (because it doesn't have to;
> $git_dir is defined, though, due to another change in the said
> commit), causing the call to return early at the newly introduced
> line of code. 
> 
> Determining the description fails accordingly.
> 
> I'm afraid I can't provide a patch as my Perl foo isn't that good.

Does the following patch fixes this issue?

-- >8 --
From: Jakub Narebski <[email-masked]>
Date: Sat, 27 Mar 2010 20:26:59 +0100
Subject: [PATCH] gitweb: git_get_project_config requires only $git_dir, not also $project

Fix overeager early return in git_get_project_config, introduced in 9be3614
(gitweb: Fix project-specific feature override behavior, 2010-03-01).  When
git_get_project_config is called from projects list page via
git_get_project_owner($path) etc., it is called with $git_dir defined (in
git_get_project_owner($path) etc.), but $project variable is not defined.
git_get_project_config doesn't use $project variable anyway.

Reported-by: Tobias Heinlein <[email-masked]>
Signed-off-by: Jakub Narebski <[email-masked]>
---
 gitweb/gitweb.perl |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index a2d2283..c356e95 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -2216,8 +2216,7 @@ sub config_to_multi {
 sub git_get_project_config {
 	my ($key, $type) = @_;
 
-	# do we have project
-	return unless (defined $project && defined $git_dir);
+	return unless defined $git_dir;
 
 	# key sanity check
 	return unless ($key);
-- 
1.7.0.1