diff --git a/power/1.0/default/Power.cpp b/power/1.0/default/Power.cpp index 29594eb22b..820c41039b 100644 --- a/power/1.0/default/Power.cpp +++ b/power/1.0/default/Power.cpp @@ -78,7 +78,9 @@ Return Power::getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_c number_platform_modes = mModule->get_number_of_platform_modes(mModule); if (number_platform_modes > 0) { - voters = new size_t [number_platform_modes]; + if (SIZE_MAX / sizeof(size_t) <= number_platform_modes) // overflow + goto done; + voters = new (std::nothrow) size_t [number_platform_modes]; if (voters == nullptr) goto done; @@ -86,7 +88,11 @@ Return Power::getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_c if (ret != 0) goto done; - legacy_states = new power_state_platform_sleep_state_t [number_platform_modes]; + if (SIZE_MAX / sizeof(power_state_platform_sleep_state_t) + <= number_platform_modes) // overflow + goto done; + legacy_states = new (std::nothrow) + power_state_platform_sleep_state_t [number_platform_modes]; if (legacy_states == nullptr) goto done;