From a76e142d4a3b18cba31183efd2b3d306b909b2ce Mon Sep 17 00:00:00 2001 From: Josef Ahmad Date: Wed, 6 Oct 2021 06:29:27 +0000 Subject: SERVER-60170 Keystring: fix theoretical issue decoding RID size --- src/mongo/db/storage/key_string.cpp | 8 ++++---- 1 file 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(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7); } - ridSize += sizes[sizeByteId] << ((numSegments - sizeByteId - 1) * 7); + ridSize += static_cast(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(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7); } - ridSize += sizes[sizeByteId] << ((numSegments - sizeByteId - 1) * 7); + ridSize += static_cast(sizes[sizeByteId]) << ((numSegments - sizeByteId - 1) * 7); invariant(bufSize >= ridSize + numSegments); -- cgit v1.2.1