summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/expression.cpp')
-rw-r--r--src/mongo/db/pipeline/expression.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/mongo/db/pipeline/expression.cpp b/src/mongo/db/pipeline/expression.cpp
index f1f55f6d4d3..8c5ef56f5f2 100644
--- a/src/mongo/db/pipeline/expression.cpp
+++ b/src/mongo/db/pipeline/expression.cpp
@@ -665,7 +665,13 @@ Value ExpressionArrayToObject::evaluate(const Document& root, Variables* variabl
<< typeName(valArray[0].getType()),
(valArray[0].getType() == BSONType::String));
- output[valArray[0].getString()] = valArray[1];
+ auto keyName = valArray[0].getStringData();
+
+ uassert(4940400,
+ "Key field cannot contain an embedded null byte",
+ keyName.find('\0') == std::string::npos);
+
+ output[keyName] = valArray[1];
} else {
uassert(
@@ -697,7 +703,13 @@ Value ExpressionArrayToObject::evaluate(const Document& root, Variables* variabl
<< typeName(key.getType()),
(key.getType() == BSONType::String));
- output[key.getString()] = value;
+ auto keyName = key.getStringData();
+
+ uassert(4940401,
+ "Key field cannot contain an embedded null byte",
+ keyName.find('\0') == std::string::npos);
+
+ output[keyName] = value;
}
}