summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosef Ahmad <josef.ahmad@mongodb.com>2021-10-06 06:29:27 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-10-06 06:57:49 +0000
commita76e142d4a3b18cba31183efd2b3d306b909b2ce (patch)
tree2bc23948a1276ac17697864e4204cea5a74bb376
parented1a1de3bbf155f9e14ad536f47771b9c8ba2561 (diff)
downloadmongo-a76e142d4a3b18cba31183efd2b3d306b909b2ce.tar.gz
SERVER-60170 Keystring: fix theoretical issue decoding RID size
-rw-r--r--src/mongo/db/storage/key_string.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/db/storage/key_string.cpp b/src/mongo/db/storage/key_string.cpp
index e9e6321d0be..bdefa0c6b24 100644
--- a/src/mongo/db/storage/key_string.cpp
+++ b/src/mongo/db/storage/key_string.cpp
@@ -2555,9 +2555,9 @@ size_t sizeWithoutRecordIdStrAtEnd(const void* bufferRaw, size_t bufSize) {
const size_t numSegments = sizeByteId + 1;
for (; sizeByteId > 0; sizeByteId--) {
- ridSize += sizes[sizeByteId] << ((numSegments - sizeByteId - 1) * 7);
+ ridSize += static_cast<size_t>(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7);
}
- ridSize += sizes[sizeByteId] << ((numSegments - sizeByteId - 1) * 7);
+ ridSize += static_cast<size_t>(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7);
invariant(bufSize >= ridSize + numSegments);
return bufSize - ridSize - numSegments;
@@ -2603,9 +2603,9 @@ RecordId decodeRecordIdStrAtEnd(const void* bufferRaw, size_t bufSize) {
const size_t numSegments = sizeByteId + 1;
for (; sizeByteId > 0; sizeByteId--) {
- ridSize += sizes[sizeByteId] << ((numSegments - sizeByteId - 1) * 7);
+ ridSize += static_cast<size_t>(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7);
}
- ridSize += sizes[sizeByteId] << ((numSegments - sizeByteId - 1) * 7);
+ ridSize += static_cast<size_t>(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7);
invariant(bufSize >= ridSize + numSegments);