Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH] gitweb: Remove "uninitialized value" Perl warning

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:07:43

On Tue, Jan 12, 2016 at 1:12 PM, Junio C Hamano [off-list ref] wrote:
Øyvind A. Holm [off-list ref] writes:
quoted
git_object(): Check if $type is defined before chomping it. This removes
a Perl warning in the server error log:

  gitweb.cgi: Use of uninitialized value $type in scalar chomp at
  [...]/gitweb.cgi line 7579., referer: [...]

when trying to access a non-existing commit, for example:

  http://HOST/?p=PROJECT.git;a=commit;h=NON_EXISTING_COMMIT
Thanks.  The analysis and description of the issue and the fix both
make sense to me.
With this, you would then do

 print $cgi->redirect(-uri => href(action=>$type, ...);

but then href treats $param{action} that is an undef as if it does not
even exist,
so the effect will not be felt during the invocation of this request.

I am not sure what happens to a request that lacks action (mapped to 'a'
parameter) that results from this redirect, though.  Would that eventually
hit dispatch where if (!defined $action) would cause it to say "Object does
not exist"?

In any case, this looks like a strict improvement. Thanks again.
quoted
Signed-off-by: Øyvind A. Holm <redacted>
---
 gitweb/gitweb.perl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 7a5b23a..05d7910 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -7576,7 +7576,7 @@ sub git_object {
                      git_cmd(), 'cat-file', '-t', $object_id) . ' 2> /dev/null'
                      or die_error(404, "Object does not exist");
              $type = <$fd>;
-             chomp $type;
+             defined $type && chomp $type;
              close $fd
                      or die_error(404, "Object does not exist");
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help