diff options
author | Ian Boros <ian.boros@mongodb.com> | 2021-05-07 18:17:29 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-10 16:09:36 +0000 |
commit | e6292a194c58d086caa1f62310491a220dda1854 (patch) | |
tree | 3af0a3f9dee98e5fb4bc2cd85dc1d43df06ccafe /src/mongo/scripting | |
parent | 5e45283c8c6f191dd0f301808942e0f11e307ff5 (diff) | |
download | mongo-e6292a194c58d086caa1f62310491a220dda1854.tar.gz |
SERVER-56777 Fix UB in valuewriter
Diffstat (limited to 'src/mongo/scripting')
-rw-r--r-- | src/mongo/scripting/mozjs/valuewriter.cpp | 8 |
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; |