Skip to content

Commit 07e13a4

Browse files
committed
escape values for regex
1 parent 0847dd8 commit 07e13a4

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/Validation/DatabasePresenceVerifier.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function getMultiCount($collection, $column, array $values, array $extra
4949
}
5050

5151
// Generates a regex like '/^(a|b|c)$/i' which can query multiple values
52-
$regex = new Regex('^('.implode('|', $values).')$', 'i');
52+
$regex = new Regex('^('.implode('|', array_map(preg_quote(...), $values)).')$', 'i');
5353

5454
$query = $this->table($collection)->where($column, 'regex', $regex);
5555

tests/ValidationTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,18 @@ public function testExists(): void
110110
);
111111
$this->assertTrue($validator->fails());
112112

113+
$validator = Validator::make(
114+
['name' => '(invalid regex{'],
115+
['name' => 'required|exists:users']
116+
);
117+
$this->assertTrue($validator->fails());
118+
119+
$validator = Validator::make(
120+
['name' => ['foo', '(invalid regex{']],
121+
['name' => 'required|exists:users']
122+
);
123+
$this->assertTrue($validator->fails());
124+
113125
User::create(['name' => '']);
114126

115127
$validator = Validator::make(

0 commit comments

Comments
 (0)