Bug 14382: [QA Follow-up] Bad regex alarm
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Fri, 3 Jul 2015 09:02:22 +0000 (11:02 +0200)
committerMason James <mtj@kohaaloha.com>
Fri, 2 Oct 2015 08:44:46 +0000 (21:44 +1300)
The regex /|date>>/ will match much more than you like :)
The unescaped pipe is bad, but you also need to remove the >> because
the split a few lines above it removes them already.

This allows you to recover from an error like this one, running another
report with a string parameter:
The given date (india%) does not match the date format (us) at
Koha/DateUtils.pm line 144.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Amended for possible spaces around the word date.

reports/guided_reports.pl

index dd0386f..c93ba5f 100755 (executable)
@@ -739,7 +739,7 @@ elsif ($phase eq 'Run this report'){
                 my $quoted = $sql_params[$i];
                 # if there are special regexp chars, we must \ them
                 $split[$i*2+1] =~ s/(\||\?|\.|\*|\(|\)|\%)/\\$1/g;
-                if ($split[$i*2+1] =~ /|date>>/) {
+                if ($split[$i*2+1] =~ /\|\s*date\s*$/) {
                     $quoted = output_pref({ dt => dt_from_string($quoted), dateformat => 'iso', dateonly => 1 }) if $quoted;
                 }
                 $quoted = C4::Context->dbh->quote($quoted);