diff --git a/src/serialize.h b/src/serialize.h index 98851056bdb..b2f1ccd9cb1 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -253,14 +253,14 @@ template concept CharNotInt8 = std::same_as && !std::same_as; template void Serialize(Stream&, V) = delete; // char serialization forbidden. Use uint8_t or int8_t -template void Serialize(Stream& s, std::byte a) { ser_writedata8(s, uint8_t(a)); } -template inline void Serialize(Stream& s, int8_t a ) { ser_writedata8(s, a); } +template void Serialize(Stream& s, std::byte a) { ser_writedata8(s, static_cast(a)); } +template inline void Serialize(Stream& s, int8_t a ) { ser_writedata8(s, static_cast(a)); } template inline void Serialize(Stream& s, uint8_t a ) { ser_writedata8(s, a); } -template inline void Serialize(Stream& s, int16_t a ) { ser_writedata16(s, a); } +template inline void Serialize(Stream& s, int16_t a ) { ser_writedata16(s, static_cast(a)); } template inline void Serialize(Stream& s, uint16_t a) { ser_writedata16(s, a); } -template inline void Serialize(Stream& s, int32_t a ) { ser_writedata32(s, a); } +template inline void Serialize(Stream& s, int32_t a ) { ser_writedata32(s, static_cast(a)); } template inline void Serialize(Stream& s, uint32_t a) { ser_writedata32(s, a); } -template inline void Serialize(Stream& s, int64_t a ) { ser_writedata64(s, a); } +template inline void Serialize(Stream& s, int64_t a ) { ser_writedata64(s, static_cast(a)); } template inline void Serialize(Stream& s, uint64_t a) { ser_writedata64(s, a); } template void Serialize(Stream& s, const B (&a)[N]) { s.write(MakeByteSpan(a)); } template void Serialize(Stream& s, const std::array& a) { s.write(MakeByteSpan(a)); } @@ -269,13 +269,13 @@ template void Serialize(Stream& s, std::span s template void Unserialize(Stream&, V) = delete; // char serialization forbidden. Use uint8_t or int8_t template void Unserialize(Stream& s, std::byte& a) { a = std::byte{ser_readdata8(s)}; } -template inline void Unserialize(Stream& s, int8_t& a ) { a = ser_readdata8(s); } +template inline void Unserialize(Stream& s, int8_t& a ) { a = static_cast(ser_readdata8(s)); } template inline void Unserialize(Stream& s, uint8_t& a ) { a = ser_readdata8(s); } -template inline void Unserialize(Stream& s, int16_t& a ) { a = ser_readdata16(s); } +template inline void Unserialize(Stream& s, int16_t& a ) { a = static_cast(ser_readdata16(s)); } template inline void Unserialize(Stream& s, uint16_t& a) { a = ser_readdata16(s); } -template inline void Unserialize(Stream& s, int32_t& a ) { a = ser_readdata32(s); } +template inline void Unserialize(Stream& s, int32_t& a ) { a = static_cast(ser_readdata32(s)); } template inline void Unserialize(Stream& s, uint32_t& a) { a = ser_readdata32(s); } -template inline void Unserialize(Stream& s, int64_t& a ) { a = ser_readdata64(s); } +template inline void Unserialize(Stream& s, int64_t& a ) { a = static_cast(ser_readdata64(s)); } template inline void Unserialize(Stream& s, uint64_t& a) { a = ser_readdata64(s); } template void Unserialize(Stream& s, B (&a)[N]) { s.read(MakeWritableByteSpan(a)); } template void Unserialize(Stream& s, std::array& a) { s.read(MakeWritableByteSpan(a)); } diff --git a/test/sanitizer_suppressions/ubsan b/test/sanitizer_suppressions/ubsan index acdae7415d2..2857af87a77 100644 --- a/test/sanitizer_suppressions/ubsan +++ b/test/sanitizer_suppressions/ubsan @@ -54,7 +54,6 @@ unsigned-integer-overflow:DecompressAmount unsigned-integer-overflow:crypto/ unsigned-integer-overflow:MurmurHash3 unsigned-integer-overflow:TxConfirmStats::EstimateMedianVal -unsigned-integer-overflow:prevector.h unsigned-integer-overflow:InsecureRandomContext::rand64 unsigned-integer-overflow:InsecureRandomContext::SplitMix64 unsigned-integer-overflow:bitset_detail::PopCount @@ -62,10 +61,8 @@ implicit-integer-sign-change:SetStdinEcho implicit-integer-sign-change:compressor.h implicit-integer-sign-change:crypto/ implicit-integer-sign-change:TxConfirmStats::removeTx -implicit-integer-sign-change:prevector.h implicit-integer-sign-change:verify_flags implicit-integer-sign-change:EvalScript -implicit-integer-sign-change:serialize.h implicit-signed-integer-truncation:crypto/ implicit-unsigned-integer-truncation:crypto/ shift-base:arith_uint256.cpp