mirror of https://github.com/qt/qtgrpc.git
ProtobufSerializer: fix potential overflow in encodeHeader
Ensure the fieldNumber remains within valid bounds before shifting. Replace implicit conversions with explicit uint* casts. Coverity-Id: 479441 Pick-to: 6.9 6.8 Change-Id: I82f9436f7fe89feab2fd60ff982c96631e390514 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
parent
4b536e162d
commit
4de7b5f2b5
|
|
@ -283,8 +283,11 @@ QByteArray QProtobufSerializerImpl::encodeHeader(int fieldNumber, QtProtobuf::Wi
|
|||
// wireType: Serialization type used for the property with fieldNumber
|
||||
|
||||
// Returns a varint-encoded fieldIndex and wireType
|
||||
|
||||
uint32_t header = (fieldNumber << 3) | int(wireType);
|
||||
[[maybe_unused]] static constexpr int32_t MaxFieldNumber =
|
||||
std::numeric_limits<uint32_t>::max() >> 3u;
|
||||
Q_ASSERT(fieldNumber >= 1 && fieldNumber <= MaxFieldNumber
|
||||
&& (fieldNumber < 19000 || fieldNumber > 19999));
|
||||
uint32_t header = (uint(fieldNumber) << 3u) | uint32_t(wireType);
|
||||
return serializeVarintCommon<uint32_t>(header);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue