]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.perl
gitweb: Handle invalid regexp in regexp search
[Gitweb] / gitweb.perl
index eac264c266909b25af34b696623410bb4d623aea484edb554d895a5509c1a4fb..16b02480c39de707da3bbbef170df8dea8ed04335b2b3f69afcb770068099c8d 100755 (executable)
@@ -1082,7 +1082,16 @@ sub evaluate_and_validate_params {
                if (length($searchtext) < 2) {
                        die_error(403, "At least two characters are required for search parameter");
                }
                if (length($searchtext) < 2) {
                        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;
+               }
        }
 }
 
        }
 }
 
This page took 0.311629 seconds and 4 git commands to generate.