Include calling uid proc state in CameraService reject log.
Bug: 123762288
Test: builds.
Change-Id: Ibaf080a7c60e52af014664f882cc37e0920353fe
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 8354ed5..3b93a4d 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -968,11 +968,14 @@
// Make sure the UID is in an active state to use the camera
if (!mUidPolicy->isUidActive(callingUid, String16(clientName8))) {
+ int32_t procState = mUidPolicy->getProcState(callingUid);
ALOGE("Access Denial: can't use the camera from an idle UID pid=%d, uid=%d",
clientPid, clientUid);
return STATUS_ERROR_FMT(ERROR_DISABLED,
- "Caller \"%s\" (PID %d, UID %d) cannot open camera \"%s\" from background",
- clientName8.string(), clientUid, clientPid, cameraId.string());
+ "Caller \"%s\" (PID %d, UID %d) cannot open camera \"%s\" from background ("
+ "calling UID %d proc state %" PRId32 ")",
+ clientName8.string(), clientUid, clientPid, cameraId.string(),
+ callingUid, procState);
}
// If sensor privacy is enabled then prevent access to the camera
@@ -2731,6 +2734,19 @@
return active;
}
+int32_t CameraService::UidPolicy::getProcState(uid_t uid) {
+ Mutex::Autolock _l(mUidLock);
+ return getProcStateLocked(uid);
+}
+
+int32_t CameraService::UidPolicy::getProcStateLocked(uid_t uid) {
+ int32_t procState = ActivityManager::PROCESS_STATE_UNKNOWN;
+ if (mMonitoredUids.find(uid) != mMonitoredUids.end()) {
+ procState = mMonitoredUids[uid].first;
+ }
+ return procState;
+}
+
void CameraService::UidPolicy::UidPolicy::addOverrideUid(uid_t uid,
String16 callingPackage, bool active) {
updateOverrideUid(uid, callingPackage, active, true);