summaryrefslogtreecommitdiff
path: root/src/mongo/scripting
diff options
context:
space:
mode:
authorIan Boros <ian.boros@mongodb.com>2021-05-07 18:17:29 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-10 16:09:36 +0000
commite6292a194c58d086caa1f62310491a220dda1854 (patch)
tree3af0a3f9dee98e5fb4bc2cd85dc1d43df06ccafe /src/mongo/scripting
parent5e45283c8c6f191dd0f301808942e0f11e307ff5 (diff)
downloadmongo-e6292a194c58d086caa1f62310491a220dda1854.tar.gz
SERVER-56777 Fix UB in valuewriter
Diffstat (limited to 'src/mongo/scripting')
-rw-r--r--src/mongo/scripting/mozjs/valuewriter.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mongo/scripting/mozjs/valuewriter.cpp b/src/mongo/scripting/mozjs/valuewriter.cpp
index f40ef984576..7af1d5325a6 100644
--- a/src/mongo/scripting/mozjs/valuewriter.cpp
+++ b/src/mongo/scripting/mozjs/valuewriter.cpp
@@ -359,10 +359,14 @@ void ValueWriter::_writeObject(BSONObjBuilder* b,
auto binData = base64::decode(*str);
+ auto subType = o.getNumber(InternedString::type);
+ uassert(5677700,
+ "BinData sub type must be between 0 and 255",
+ subType >= 0 && subType <= 255);
+
b->appendBinData(sd,
binData.size(),
- static_cast<mongo::BinDataType>(
- static_cast<int>(o.getNumber(InternedString::type))),
+ static_cast<mongo::BinDataType>(static_cast<int>(subType)),
binData.c_str());
return;