ODK: Fix a few implict type conversion issues
(This is a merge of http://go/wvgerrit/134403.) Reported as errors by UBSAN Bug: 194971260 Test: Ran ODK unit tests Change-Id: I2f38fb6952d259458af8498e86b3308421e93320
This commit is contained in:
@@ -52,25 +52,25 @@ void Pack_bool(ODK_Message* message, const bool* value) {
|
|||||||
void Pack_uint16_t(ODK_Message* message, const uint16_t* value) {
|
void Pack_uint16_t(ODK_Message* message, const uint16_t* value) {
|
||||||
assert(value);
|
assert(value);
|
||||||
uint8_t data[2] = {0};
|
uint8_t data[2] = {0};
|
||||||
data[0] = *value >> 8;
|
data[0] = (uint8_t)(*value >> 8);
|
||||||
data[1] = *value >> 0;
|
data[1] = (uint8_t)(*value >> 0);
|
||||||
PackBytes(message, data, sizeof(data));
|
PackBytes(message, data, sizeof(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pack_uint32_t(ODK_Message* message, const uint32_t* value) {
|
void Pack_uint32_t(ODK_Message* message, const uint32_t* value) {
|
||||||
assert(value);
|
assert(value);
|
||||||
uint8_t data[4] = {0};
|
uint8_t data[4] = {0};
|
||||||
data[0] = *value >> 24;
|
data[0] = (uint8_t)(*value >> 24);
|
||||||
data[1] = *value >> 16;
|
data[1] = (uint8_t)(*value >> 16);
|
||||||
data[2] = *value >> 8;
|
data[2] = (uint8_t)(*value >> 8);
|
||||||
data[3] = *value >> 0;
|
data[3] = (uint8_t)(*value >> 0);
|
||||||
PackBytes(message, data, sizeof(data));
|
PackBytes(message, data, sizeof(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pack_uint64_t(ODK_Message* message, const uint64_t* value) {
|
void Pack_uint64_t(ODK_Message* message, const uint64_t* value) {
|
||||||
assert(value);
|
assert(value);
|
||||||
uint32_t hi = *value >> 32;
|
uint32_t hi = (uint32_t)(*value >> 32);
|
||||||
uint32_t lo = *value;
|
uint32_t lo = (uint32_t)(*value);
|
||||||
Pack_uint32_t(message, &hi);
|
Pack_uint32_t(message, &hi);
|
||||||
Pack_uint32_t(message, &lo);
|
Pack_uint32_t(message, &lo);
|
||||||
}
|
}
|
||||||
@@ -104,7 +104,7 @@ static void UnpackBytes(ODK_Message* message, uint8_t* ptr, size_t count) {
|
|||||||
int Unpack_enum(ODK_Message* message) {
|
int Unpack_enum(ODK_Message* message) {
|
||||||
uint32_t v32;
|
uint32_t v32;
|
||||||
Unpack_uint32_t(message, &v32);
|
Unpack_uint32_t(message, &v32);
|
||||||
return v32;
|
return (int)v32;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unpack_bool(ODK_Message* message, bool* value) {
|
void Unpack_bool(ODK_Message* message, bool* value) {
|
||||||
|
|||||||
Reference in New Issue
Block a user