Merge branch 'jn/maint-gitweb-invalid-regexp' into maint
* jn/maint-gitweb-invalid-regexp: gitweb: Handle invalid regexp in regexp searchmaint
commit
3ecd0c8b4d
|
@ -1073,7 +1073,16 @@ sub evaluate_and_validate_params {
|
||||||
if (length($searchtext) < 2) {
|
if (length($searchtext) < 2) {
|
||||||
die_error(403, "At least two characters are required for search parameter");
|
die_error(403, "At least two characters are required for search parameter");
|
||||||
}
|
}
|
||||||
$search_regexp = $search_use_regexp ? $searchtext : quotemeta $searchtext;
|
if ($search_use_regexp) {
|
||||||
|
$search_regexp = $searchtext;
|
||||||
|
if (!eval { qr/$search_regexp/; 1; }) {
|
||||||
|
(my $error = $@) =~ s/ at \S+ line \d+.*\n?//;
|
||||||
|
die_error(400, "Invalid search regexp '$search_regexp'",
|
||||||
|
esc_html($error));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$search_regexp = quotemeta $searchtext;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,4 +134,14 @@ our $maxload = undef;
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# invalid arguments
|
||||||
|
|
||||||
|
test_expect_success 'invalid arguments: invalid regexp (in project search)' '
|
||||||
|
gitweb_run "a=project_list;s=*\.git;sr=1" &&
|
||||||
|
grep "Status: 400" gitweb.headers &&
|
||||||
|
grep "400 - Invalid.*regexp" gitweb.body
|
||||||
|
'
|
||||||
|
test_debug 'cat gitweb.headers'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue