Add ubsan build variant to build_examples script (#23953)
* Add ubsan build variant to build_examples script
* Fix warnings reported by gcc when compiling with UBSAN
* Build Tizen chip-toll-ubsan on CI to verify non-UB
* Update targets testdata for Linux x64
diff --git a/src/ble/CHIPBleServiceData.h b/src/ble/CHIPBleServiceData.h
index c39a30e..965ae74 100644
--- a/src/ble/CHIPBleServiceData.h
+++ b/src/ble/CHIPBleServiceData.h
@@ -94,8 +94,8 @@
void SetDeviceDiscriminator(uint16_t deviceDiscriminator)
{
// Discriminator is 12-bit long, so don't overwrite bits 12th through 15th
- deviceDiscriminator &= kDiscriminatorMask;
- deviceDiscriminator |= static_cast<uint16_t>(DeviceDiscriminatorAndAdvVersion[1] << 8u & ~kDiscriminatorMask);
+ auto advVersion = static_cast<uint16_t>(DeviceDiscriminatorAndAdvVersion[1] << 8u & ~kDiscriminatorMask);
+ deviceDiscriminator = static_cast<uint16_t>(advVersion | (deviceDiscriminator & kDiscriminatorMask));
chip::Encoding::LittleEndian::Put16(DeviceDiscriminatorAndAdvVersion, deviceDiscriminator);
}