Skip to content

Commit 4bcc606

Browse files
committed
Always use delimiter not present in search expression
This avoids need to figure out correct escaping in case delimiter is present in the expression. Signed-off-by: Michal Čihař <michal@cihar.com>
1 parent 2f49508 commit 4bcc606

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

Diff for: libraries/controllers/table/TableSearchController.php

+14-1
Original file line numberDiff line numberDiff line change
@@ -726,9 +726,22 @@ private function _getRegexReplaceRows(
726726
$result = $this->dbi->fetchResult($sql_query, 0);
727727

728728
if (is_array($result)) {
729+
/* Iterate over possible delimiters to get one */
730+
$delimiters = array('/', '@', '#', '~', '!', '$', '%', '^', '&', '_');
731+
$found = false;
732+
for ($i = 0; $i < count($delimiters); $i++) {
733+
if (strpos($find, $delimiters[$i]) === false) {
734+
$found = true;
735+
break;
736+
}
737+
}
738+
if (! $found) {
739+
return false;
740+
}
741+
$find = $delimiters[$i] . $find . $delimiters[$i];
729742
foreach ($result as $index=>$row) {
730743
$result[$index][1] = preg_replace(
731-
"/" . $find . "/",
744+
$find,
732745
$replaceWith,
733746
$row[0]
734747
);

0 commit comments

Comments
 (0)