Merge latest oemcrypto-v17 change
No-Typo-Check: Not related to this change. Bug: 161477208 Change-Id: I99e4780f6855b7045aa0cd5a49c13d2d0d51ed64
This commit is contained in:
committed by
Fred Gylys-Colwell
parent
c924960962
commit
642965c678
@@ -49,6 +49,13 @@ void Pack_bool(ODK_Message* message, const bool* value) {
|
||||
PackBytes(message, data, sizeof(data));
|
||||
}
|
||||
|
||||
void Pack_uint8_t(ODK_Message* message, const uint8_t* value) {
|
||||
assert(value);
|
||||
uint8_t data[1] = {0};
|
||||
data[0] = (uint8_t)(*value >> 0);
|
||||
PackBytes(message, data, sizeof(data));
|
||||
}
|
||||
|
||||
void Pack_uint16_t(ODK_Message* message, const uint16_t* value) {
|
||||
assert(value);
|
||||
uint8_t data[2] = {0};
|
||||
@@ -114,6 +121,13 @@ void Unpack_bool(ODK_Message* message, bool* value) {
|
||||
*value = (0 != data[3]);
|
||||
}
|
||||
|
||||
void Unpack_uint8_t(ODK_Message* message, uint8_t* value) {
|
||||
assert(value);
|
||||
uint8_t data[1] = {0};
|
||||
UnpackBytes(message, data, sizeof(data));
|
||||
*value = data[0];
|
||||
}
|
||||
|
||||
void Unpack_uint16_t(ODK_Message* message, uint16_t* value) {
|
||||
assert(value);
|
||||
uint8_t data[2] = {0};
|
||||
@@ -123,7 +137,7 @@ void Unpack_uint16_t(ODK_Message* message, uint16_t* value) {
|
||||
}
|
||||
|
||||
void Unpack_uint32_t(ODK_Message* message, uint32_t* value) {
|
||||
ODK_Message_Impl* message_impl = GetMessageImpl(message);
|
||||
ODK_Message_Impl* message_impl = (ODK_Message_Impl*)message;
|
||||
if (!message_impl) return;
|
||||
uint8_t data[4] = {0};
|
||||
UnpackBytes(message, data, sizeof(data));
|
||||
@@ -155,10 +169,18 @@ void Unpack_OEMCrypto_Substring(ODK_Message* message,
|
||||
/* Each substring should be contained within the message body, which is in the
|
||||
* total message, just after the core message. The offset of a substring is
|
||||
* relative to the message body. So we need to verify:
|
||||
* 0 < offset and offset + length < message_impl->capacity -
|
||||
* message_impl->size or offset + length + message_impl->size <
|
||||
* message_impl->capacity
|
||||
*
|
||||
* For non-empty substring:
|
||||
* offset + length < message_impl->capacity - message_impl->size or
|
||||
* offset + length + message_impl->size < message_impl->capacity
|
||||
*
|
||||
* For empty substring (length is 0):
|
||||
* offset must be 0
|
||||
*/
|
||||
if (length == 0 && offset != 0) {
|
||||
message_impl->status = MESSAGE_STATUS_UNKNOWN_ERROR;
|
||||
return;
|
||||
}
|
||||
size_t substring_end = 0; /* = offset + length; */
|
||||
size_t end = 0; /* = substring_end + message_impl->size; */
|
||||
if (odk_add_overflow_ux(offset, length, &substring_end) ||
|
||||
|
||||
Reference in New Issue
Block a user