Prevent null vector accessing in USB HAL

If getPortStatusHelper() failed to allocate currentPortStatus_1_2 size,
it should not access this vector, otherwise it would cause crash.

Bug: 142366879
Bug: 174635444
Test: try to adb root and re-connect USB
Change-Id: I0d0d9cd1dccd646ce270b562f2922da15338bfc1
Signed-off-by: pumahsu <pumahsu@google.com>
Signed-off-by: Ricky Niu <rickyniu@google.com>
This commit is contained in:
pumahsu
2019-10-14 17:34:39 +08:00
committed by Ricky Niu
parent 3c6d16b8ce
commit bdf4ac7894

View File

@@ -97,6 +97,11 @@ int32_t writeFile(const std::string &filename, const std::string &contents) {
Status queryMoistureDetectionStatus(hidl_vec<PortStatus> *currentPortStatus_1_2) {
std::string enabled, status;
if (currentPortStatus_1_2 == NULL || currentPortStatus_1_2->size() == 0) {
ALOGE("currentPortStatus_1_2 is not available");
return Status::ERROR;
}
(*currentPortStatus_1_2)[0].supportedContaminantProtectionModes = 0;
(*currentPortStatus_1_2)[0].supportedContaminantProtectionModes |=
ContaminantProtectionMode::FORCE_SINK;
@@ -563,7 +568,8 @@ void queryVersionHelper(android::hardware::usb::V1_2::implementation::Usb *usb,
if (usb->mCallback_1_0 != NULL) {
if (callback_V1_2 != NULL) {
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_2);
queryMoistureDetectionStatus(currentPortStatus_1_2);
if (status == Status::SUCCESS)
queryMoistureDetectionStatus(currentPortStatus_1_2);
} else if (callback_V1_1 != NULL) {
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_1);
currentPortStatus_1_1.resize(currentPortStatus_1_2->size());