From 5874bba486f05516d8413ff3710bf2595c711d3b Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Thu, 21 Feb 2019 15:06:41 -0800 Subject: [PATCH] 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 --- camera/device/3.4/default/CameraDeviceSession.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/camera/device/3.4/default/CameraDeviceSession.cpp b/camera/device/3.4/default/CameraDeviceSession.cpp index e00b3f83d0..03b6050397 100644 --- a/camera/device/3.4/default/CameraDeviceSession.cpp +++ b/camera/device/3.4/default/CameraDeviceSession.cpp @@ -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]; }