diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index 51d0682d2a..8113c3f19b 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -972,8 +972,9 @@ Status CameraService::validateClientPermissionsLocked(const String8& cameraId, userid_t clientUserId = multiuser_get_user_id(clientUid); // Only allow clients who are being used by the current foreground device user, unless calling - // from our own process. - if (callingPid != getpid() && (mAllowedUsers.find(clientUserId) == mAllowedUsers.end())) { + // from our own process OR the caller is using the cameraserver's HIDL interface. + if (!hardware::IPCThreadState::self()->isServingCall() && callingPid != getpid() && + (mAllowedUsers.find(clientUserId) == mAllowedUsers.end())) { ALOGE("CameraService::connect X (PID %d) rejected (cannot connect from " "device user %d, currently allowed device users: %s)", callingPid, clientUserId, toString(mAllowedUsers).string());