/**
* Test that the server errors when given an invalid regex.
*/
(function() {
const coll = db.regex_error;
coll.drop();
// Run some invalid regexes.
assert.commandFailedWithCode(coll.runCommand("find", {filter: {a: {$regex: "[)"}}}), 51091);
assert.commandFailedWithCode(coll.runCommand("find", {filter: {a: {$regex: "ab\0c"}}}),
ErrorCodes.BadValue);
assert.commandFailedWithCode(
coll.runCommand("find", {filter: {a: {$regex: "ab", $options: "\0i"}}}), ErrorCodes.BadValue);
// SERVER-58705: Should fail without a memory leak
assert.commandFailedWithCode(coll.runCommand("find", {
filter: {
a: {
$regex:
"(?JJJ)>?W((?!)||(?W!| P(?!) C(?!)||(?!)|;|(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?!?!)|(?W!| P(?!) C(?!)||(?!aR)|(?!?!)||(?)|(?!6]|P(?!)|(?!?!);|(?W!| P(?!) C(?!)||(?!aR|(?!?!);|(?W!) (?!)||(?)|(?||(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?!?!);|(?W(?!) C(?!)||(?!aR)|(?|1|t(?)(?!??!:aW ) C(?!)||(?!aR)|(?!?!|(?W!| P(?!) C(?!)||(?!aR)|(?!(?)(?!:aW ) C(?!)|;|(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?!?!);|(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?!?!)|(?W!| P(?!) C(?!)||(?!aR)|(?!?!)||(?)|(?!2]|P(?!)|C(?!()|(?!?!);|(?W!| P(?!) C(?!)||(?!aR|(?!?!);|(?W!) __P(?!-||(?)|(?||(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?!?!);|(?W(?!) C(?!)||(?!aR)|(?|1|t(?)(?!??!|(?)|(?!3]|P(?!)|C(?!)||(?!aR)|(?!?!);|(?W!| P(?!) C(?!)|;|(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?! m);|(?W!| P(?!) C(?!)||(?!aR)|(?!?!)||(?)|(?!6]|P(?!)|C(?!()(?!?!);|(?W!| P(?!) C(?!)||(?!?!);|(?W!) !)||(?)|(?!6]|P(?!)|(?!?!);|(?W!| P(?!) C(?!)||(?!aR|(?!?!);|(?W!) (?!)||(?)|(?||(?W!| P(?!) C(?!)||(?!aR(?!aR)|(?!?!);|(?W(?!) C(?!)||(?!aR)|(?|1|t(?)(?!??<__P(?!||(?)|(?||(?!?<"
}
}
}),
51091);
})();