From 5b1ab14702405887852a90725ab0782ce55fce41 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 14 Apr 2015 13:45:14 +0200 Subject: [PATCH] Bug 10131: Add a fallback if the pref search is not a valid regex It's possible to search prefs using a regex. But it the regex is not correctly written, the app explodes. We should provide a fallback. Test plan: 0/ Does not apply the patch 1/ Search for sysprefs with "notes.*", note the number of results 2/ Search for *notes*, boom 3/ Apply the patch 4/ Repeat 1 and confirm you get the same number of results 5/ Repeat 2 and confirm you don't get the error anymore NOTE: As noted on comment #4, the kaboom is because of the leading * and not the following *, because 's*' is a valid regular expression, while '*n' is not. Signed-off-by: Mark Tompsett --- admin/preferences.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/admin/preferences.pl b/admin/preferences.pl index a6b4776..4fc2612 100755 --- a/admin/preferences.pl +++ b/admin/preferences.pl @@ -271,7 +271,15 @@ sub SearchPrefs { sub matches { my ( $text, $terms ) = @_; - if ( $text ) { return !grep( { $text !~ /$_/i } @$terms ); } + if ( $text ) { + return !grep( + { + my $re = eval{qr|$_|i}; + $re = qr|\Q$_\E| if $@; + $text !~ m|$re|; + } @$terms + ) + } } my $dbh = C4::Context->dbh; -- 1.9.1