From 133b9df951c633a1f72b7e12f8aa9ee9d7da9db6 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 1 Jul 2014 13:06:10 -0700 Subject: [PATCH] Fix issue #16013164: Externally Reported Moderate: AppOpsService.setMode() allows setting mode for own uid without permission Change-Id: Ic60a10f0e95f19658c61567826dff28b657efe73 --- services/core/java/com/android/server/AppOpsService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index bfa04020a9a9e..176ba5db3b67e 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -368,7 +368,11 @@ public class AppOpsService extends IAppOpsService.Stub { @Override public void setMode(int code, int uid, String packageName, int mode) { - verifyIncomingUid(uid); + if (Binder.getCallingPid() == Process.myPid()) { + return; + } + mContext.enforcePermission(android.Manifest.permission.UPDATE_APP_OPS_STATS, + Binder.getCallingPid(), Binder.getCallingUid(), null); verifyIncomingOp(code); ArrayList repCbs = null; code = AppOpsManager.opToSwitch(code);