Re: [PATCH/RESEND] gitweb: Fix snapshots requested via PATH_INFO
From: Jakub Narebski <hidden>
Date: 2016-06-15 22:46:36
On Wed, 15 April 2009, Junio C Hamano wrote:
Holger Weiß [off-list ref] writes:quoted
Fix the detection of the requested snapshot format, which failed for PATH_INFO URLs since the references to the hashes which describe the supported snapshot formats weren't dereferenced appropriately. Signed-off-by: Holger Weiß <redacted> --- I guess this one got lost. Without this patch, snapshots won't work if Gitweb is configured to generate PATH_INFO URLs. (Original Message-ID: [ref]).The patch looks obviously correct; "our %known_snapshort_formats" maps a name to a hashref, but the current code makes a nonsense assignment, essentialy doing ($fmt, %opt) = ($name, $hashref), but what would I know... I am not using gitweb actively. These lines come from 1ec2fb5 (gitweb: retrieve snapshot format from PATH_INFO, 2008-11-02) by Guiseppe. Judging from the "git shortlog -n -s --grep=PATH_INFO gitweb" output, I think I should have heard from either Guiseppe and Jakub by now if this patch is desired. Pinging them...
This change looks correct, and is very much desired. Thanks for catching this. By the way, if there was check added for full path_info snapshot URL in existing t/t9500-gitweb-standalone-no-errors.sh it would caught this bug thanks to the "Odd number of elements in hash assignment ..." warning that Perl throws in this case.
quoted
gitweb/gitweb.perl | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 33ef190..3f99361 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl@@ -688,10 +688,10 @@ sub evaluate_path_info { # extensions. Allowed extensions are both the defined suffix # (which includes the initial dot already) and the snapshot # format key itself, with a prepended dot - while (my ($fmt, %opt) = each %known_snapshot_formats) { + while (my ($fmt, $opt) = each %known_snapshot_formats) { my $hash = $refname; my $sfx; - $hash =~ s/(\Q$opt{'suffix'}\E|\Q.$fmt\E)$//; + $hash =~ s/(\Q$opt->{'suffix'}\E|\Q.$fmt\E)$//; next unless $sfx = $1; # a valid suffix was found, so set the snapshot format # and reset the hash parameter-- 1.6.2.1
-- Jakub Narebski Poland