summaryrefslogtreecommitdiff
path: root/src/mongo/db/write_concern_options.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-14 14:26:38 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-14 14:26:38 -0300
commit294bc6ecabf14c09c9bc8644704921dcf97cb44e (patch)
tree279b1e0bab53901a1647ac63c1c724f0f789a663 /src/mongo/db/write_concern_options.cpp
parent70be7c27a251621187a1de533462ae2bb1e3bd39 (diff)
parent1e917fd798aa25b7066d4b414b51184f13d5a092 (diff)
Update upstream source from tag 'upstream/6.0.10'debian/6.0.10-1
Update to upstream version '6.0.10' with Debian dir 2d176fa254eee97b139f712fec5709641335a8c3
Diffstat (limited to 'src/mongo/db/write_concern_options.cpp')
-rw-r--r--src/mongo/db/write_concern_options.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/db/write_concern_options.cpp b/src/mongo/db/write_concern_options.cpp
index c87e21691fc..7cf9b373d61 100644
--- a/src/mongo/db/write_concern_options.cpp
+++ b/src/mongo/db/write_concern_options.cpp
@@ -233,11 +233,18 @@ void serializeWriteConcernW(const WriteConcernW& w, StringData fieldName, BSONOb
}
std::int64_t parseWTimeoutFromBSON(BSONElement element) {
+ // Store wTimeout as a 64-bit value but functionally limit it to int32 as values larger than
+ // than that do not make much sense to use and were not previously supported.
constexpr std::array<mongo::BSONType, 4> validTypes{
NumberLong, NumberInt, NumberDecimal, NumberDouble};
bool isValidType = std::any_of(
validTypes.begin(), validTypes.end(), [&](auto type) { return element.type() == type; });
- return isValidType ? element.safeNumberLong() : 0;
+
+ auto value = isValidType ? element.safeNumberLong() : 0;
+ uassert(ErrorCodes::FailedToParse,
+ "wtimeout must be a 32-bit integer",
+ value <= std::numeric_limits<int32_t>::max());
+ return value;
}
BSONObj WriteConcernOptions::toBSON() const {