summaryrefslogtreecommitdiff
path: root/src/mongo/db/matcher/expression_leaf.cpp
diff options
context:
space:
mode:
authorIan Boros <puppyofkosh@gmail.com>2019-02-25 14:38:42 -0500
committerIan Boros <puppyofkosh@gmail.com>2019-02-28 13:50:38 -0500
commit5f772b0b1139f4b9bbff098d4bcee59cf2e95cda (patch)
tree6b47af38db51ef2ca06aaf1e8d6d3250124d1d83 /src/mongo/db/matcher/expression_leaf.cpp
parent1eadc480a431473e8c975e9d2eccb06ad7831c87 (diff)
downloadmongo-5f772b0b1139f4b9bbff098d4bcee59cf2e95cda.tar.gz
SERVER-39697 MatchExpressions regex error at parse time if regex is invalid
Diffstat (limited to 'src/mongo/db/matcher/expression_leaf.cpp')
-rw-r--r--src/mongo/db/matcher/expression_leaf.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/db/matcher/expression_leaf.cpp b/src/mongo/db/matcher/expression_leaf.cpp
index 52d19d188c9..1a0c7934495 100644
--- a/src/mongo/db/matcher/expression_leaf.cpp
+++ b/src/mongo/db/matcher/expression_leaf.cpp
@@ -217,7 +217,6 @@ inline pcrecpp::RE_Options flags2options(const char* flags) {
}
const std::set<char> RegexMatchExpression::kValidRegexFlags = {'i', 'm', 's', 'x'};
-constexpr size_t RegexMatchExpression::kMaxPatternSize;
RegexMatchExpression::RegexMatchExpression(StringData path, const BSONElement& e)
: LeafMatchExpression(REGEX, path),
@@ -237,9 +236,6 @@ RegexMatchExpression::RegexMatchExpression(StringData path, StringData regex, St
}
void RegexMatchExpression::_init() {
- uassert(
- ErrorCodes::BadValue, "Regular expression is too long", _regex.size() <= kMaxPatternSize);
-
uassert(ErrorCodes::BadValue,
"Regular expression cannot contain an embedded null byte",
_regex.find('\0') == std::string::npos);
@@ -247,6 +243,10 @@ void RegexMatchExpression::_init() {
uassert(ErrorCodes::BadValue,
"Regular expression options string cannot contain an embedded null byte",
_flags.find('\0') == std::string::npos);
+
+ uassert(51091,
+ str::stream() << "Regular expression is invalid: " << _re->error(),
+ _re->error().empty());
}
RegexMatchExpression::~RegexMatchExpression() {}