From 02f7d6a4731cd58cb9653755acab8d9af6eb4542 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 Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 65cb0f5be636a15387a3996c32da051d4114719e) Signed-off-by: Chris Cormack --- admin/preferences.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/admin/preferences.pl b/admin/preferences.pl index b8bb64ddd1..298b83ec54 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; -- 2.39.5