remove linking against aidl enum
using transaction id directly is not recommended
so remove permission check in onTransact() and add it into notifySystemEvent()
Bug: 119525871
Test: m -j
Change-Id: I0f2feb5204876fa9b56b9cdb096f25d2226025ec
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 4dacd02..2f50e3a 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -1579,6 +1579,23 @@
Status CameraService::notifySystemEvent(int32_t eventId,
const std::vector<int32_t>& args) {
+ const int pid = CameraThreadState::getCallingPid();
+ const int selfPid = getpid();
+
+ // Permission checks
+ if (pid != selfPid) {
+ // Ensure we're being called by system_server, or similar process with
+ // permissions to notify the camera service about system events
+ if (!checkCallingPermission(
+ String16("android.permission.CAMERA_SEND_SYSTEM_EVENTS"))) {
+ const int uid = CameraThreadState::getCallingUid();
+ ALOGE("Permission Denial: cannot send updates to camera service about system"
+ " events from pid=%d, uid=%d", pid, uid);
+ return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
+ "No permission to send updates to camera service about system events from pid=%d, uid=%d", pid, uid);
+ }
+ }
+
ATRACE_CALL();
switch(eventId) {
@@ -1993,9 +2010,6 @@
status_t CameraService::onTransact(uint32_t code, const Parcel& data, Parcel* reply,
uint32_t flags) {
- const int pid = CameraThreadState::getCallingPid();
- const int selfPid = getpid();
-
// Permission checks
switch (code) {
case SHELL_COMMAND_TRANSACTION: {
@@ -2022,20 +2036,6 @@
}
return NO_ERROR;
}
- case BnCameraService::NOTIFYSYSTEMEVENT: {
- if (pid != selfPid) {
- // Ensure we're being called by system_server, or similar process with
- // permissions to notify the camera service about system events
- if (!checkCallingPermission(
- String16("android.permission.CAMERA_SEND_SYSTEM_EVENTS"))) {
- const int uid = CameraThreadState::getCallingUid();
- ALOGE("Permission Denial: cannot send updates to camera service about system"
- " events from pid=%d, uid=%d", pid, uid);
- return PERMISSION_DENIED;
- }
- }
- break;
- }
}
return BnCameraService::onTransact(code, data, reply, flags);