RESTRICT AUTOMERGE: Camera: fix use after free in sensor timestamp The metadata object might be overriden later and has it memory re-allocated; hence snaping the sensor timestamp value before we call into any method that might change the metadata. Test: build Bug: 150944913 Merged-In: I0f944fc9133d3ab279859f20236d956d7ca338f8 Change-Id: I5b10b680e0cce96ca49e1772770adb4835545472
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index a8e80fa..e347127 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -3521,6 +3521,8 @@ frameNumber); return; } + nsecs_t sensorTimestamp = timestamp.data.i64[0]; + for (auto& physicalMetadata : captureResult.mPhysicalMetadatas) { camera_metadata_entry timestamp = physicalMetadata.mPhysicalCameraMetadata.find(ANDROID_SENSOR_TIMESTAMP); @@ -3575,7 +3577,7 @@ CameraMetadata(m.mPhysicalCameraMetadata)); } mTagMonitor.monitorMetadata(TagMonitor::RESULT, - frameNumber, timestamp.data.i64[0], captureResult.mMetadata, + frameNumber, sensorTimestamp, captureResult.mMetadata, monitoredPhysicalMetadata); insertResultLocked(&captureResult, frameNumber);