diff options
author | Tom Keel <thomas.keel@intel.com> | 2015-10-08 16:42:56 +0200 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2015-10-21 17:41:39 -0700 |
commit | 5adc76c49a525993f3362cf648864fb21f4547f0 (patch) | |
tree | 6e17c9ab60cdc625ef49754aef2e345f5137e130 /services | |
parent | e710ae53001bbbf1e1afd6b3f5c3478c673afd0e (diff) | |
download | frameworks_av-5adc76c49a525993f3362cf648864fb21f4547f0.zip frameworks_av-5adc76c49a525993f3362cf648864fb21f4547f0.tar.gz frameworks_av-5adc76c49a525993f3362cf648864fb21f4547f0.tar.bz2 |
DO NOT MERGE: libcameraservice: Fix nullptr crash when no client.
This change prevents a crash in the camera service when the camera
HAL notifies the service about the absence of a removable camera and
there happens to be no client connected to the service. It checks
that the pointer returned from clientToDisconnect.get() is non-null
before trying to dereference it (as is done in existing code
immediately below this change).
Bug: 25165323
Change-Id: I8055654bac980542e63ea7f52bf897eaafbc09bc
Signed-off-by: Tom Keel <thomas.keel@intel.com>
Diffstat (limited to 'services')
-rw-r--r-- | services/camera/libcameraservice/CameraService.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index 2bb282f..3deb396 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -315,8 +315,10 @@ void CameraService::onDeviceStatusChanged(camera_device_status_t cameraId, clientToDisconnect = removeClientLocked(id); // Notify the client of disconnection - clientToDisconnect->notifyError(ICameraDeviceCallbacks::ERROR_CAMERA_DISCONNECTED, - CaptureResultExtras{}); + if (clientToDisconnect != nullptr) { + clientToDisconnect->notifyError(ICameraDeviceCallbacks::ERROR_CAMERA_DISCONNECTED, + CaptureResultExtras{}); + } } ALOGI("%s: Client for camera ID %s evicted due to device status change from HAL", |