Fix potential integer overflows identified by Coverity
Convert ODK_LAST_STRESSABLE_TYPE to an aliased enum value so that ODK_FieldLength always returns a valid value instead of SIZE_MAX. PiperOrigin-RevId: 602823670 Change-Id: I7a843cacca8201677c0f31249112c04f6c3e04cb
This commit is contained in:
@@ -360,22 +360,20 @@ size_t ODK_FieldLength(ODK_FieldType type) {
|
||||
return sizeof(uint64_t);
|
||||
case ODK_INT64:
|
||||
return sizeof(uint64_t);
|
||||
case ODK_BOOL: // Booleans are stored in the message as 32 bit ints.
|
||||
return sizeof(uint32_t);
|
||||
case ODK_SUBSTRING:
|
||||
return sizeof(uint32_t) + sizeof(uint32_t);
|
||||
case ODK_DEVICEID:
|
||||
return ODK_DEVICE_ID_LEN_MAX;
|
||||
case ODK_MESSAGECOUNTER:
|
||||
return ODK_MESSAGECOUNTERINFO_SIZE;
|
||||
case ODK_DEVICEINFO:
|
||||
return ODK_DEVICE_INFO_LEN_MAX;
|
||||
case ODK_MESSAGECOUNTER:
|
||||
return ODK_MESSAGECOUNTERINFO_SIZE;
|
||||
case ODK_RENEWALDATA:
|
||||
return ODK_KEYBOX_RENEWAL_DATA_SIZE;
|
||||
case ODK_HASH:
|
||||
return ODK_SHA256_HASH_SIZE;
|
||||
default:
|
||||
return SIZE_MAX;
|
||||
case ODK_BOOL: // Booleans are stored in the message as 32 bit ints.
|
||||
return sizeof(uint32_t);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user