Camera: Avoid using an uninitialized physical camera id

'mStreamMap' entries can be inserted by several versions
of HIDL API calls. If the fields are initialized by an
older version, then make sure that newer additions are
always initialized in the respective API method.

Bug: 73885805
Test:
adb shell
/data/nativetest64/VtsHalCameraProviderV2_4TargetTest/VtsHalCameraProviderV2_4TargetTest
--hal_service_instance=android.hardware.camera.provider@2.4::ICameraProvider/legacy/0

Change-Id: Ib5bd8f608da05f628c52d288c518cebbe964182b
This commit is contained in:
Emilian Peev 2019-02-21 15:06:41 -08:00
parent 70eae1d3f0
commit 5874bba486

View file

@ -187,7 +187,6 @@ bool CameraDeviceSession::preProcessConfigurationLocked_3_4(
mPhysicalCameraIdMap[id] = requestedConfiguration.streams[i].physicalCameraId;
mStreamMap[id].data_space = mapToLegacyDataspace(
mStreamMap[id].data_space);
mStreamMap[id].physical_camera_id = mPhysicalCameraIdMap[id].c_str();
mCirculatingBuffers.emplace(stream.mId, CirculatingBuffers{});
} else {
// width/height/format must not change, but usage/rotation might need to change
@ -206,6 +205,11 @@ bool CameraDeviceSession::preProcessConfigurationLocked_3_4(
mStreamMap[id].rotation = (int) requestedConfiguration.streams[i].v3_2.rotation;
mStreamMap[id].usage = (uint32_t) requestedConfiguration.streams[i].v3_2.usage;
}
// It is possible for the entry in 'mStreamMap' to get initialized by an older
// HIDL API. Make sure that the physical id is always initialized when using
// a more recent API call.
mStreamMap[id].physical_camera_id = mPhysicalCameraIdMap[id].c_str();
(*streams)[i] = &mStreamMap[id];
}