gitweb: Allow arbitrary strings to be dug with pickaxe

Currently, there are rather draconian restrictions on the strings accepted
by the pickaxe search, which degrades its usefulness for digging in code
significantly. This patch remedies mentioned limitation.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Petr Baudis 2007-05-17 04:30:42 +02:00 committed by Junio C Hamano
parent e773855372
commit 4229aa5141

View File

@ -399,7 +399,7 @@ if (defined $searchtype) {
our $searchtext = $cgi->param('s'); our $searchtext = $cgi->param('s');
our $search_regexp; our $search_regexp;
if (defined $searchtext) { if (defined $searchtext) {
if ($searchtype ne 'grep' and $searchtext =~ m/[^a-zA-Z0-9_\.\/\-\+\:\@ ]/) { if ($searchtype ne 'grep' and $searchtype ne 'pickaxe' and $searchtext =~ m/[^a-zA-Z0-9_\.\/\-\+\:\@ ]/) {
die_error(undef, "Invalid search parameter"); die_error(undef, "Invalid search parameter");
} }
if (length($searchtext) < 2) { if (length($searchtext) < 2) {
@ -4725,8 +4725,10 @@ sub git_search {
my $alternate = 1; my $alternate = 1;
$/ = "\n"; $/ = "\n";
my $git_command = git_cmd_str(); my $git_command = git_cmd_str();
my $searchqtext = $searchtext;
$searchqtext =~ s/'/'\\''/;
open my $fd, "-|", "$git_command rev-list $hash | " . open my $fd, "-|", "$git_command rev-list $hash | " .
"$git_command diff-tree -r --stdin -S\'$searchtext\'"; "$git_command diff-tree -r --stdin -S\'$searchqtext\'";
undef %co; undef %co;
my @files; my @files;
while (my $line = <$fd>) { while (my $line = <$fd>) {