summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author atrost <atrost@google.com> 2020-02-17 19:26:41 +0000
committer atrost <atrost@google.com> 2020-02-17 19:26:41 +0000
commit24274277e1d0dbdbc1d9d7ed2e6f851c068112ac (patch)
tree66d3e92559c64dd5a1603fddf55a00b24964cfc4
parent2481844969dfe286792bc28a2d8473761b96d5fb (diff)
Clear calling id before binder call
The permission check in app compat fails without clearing calling id. Bug: 149662772 Test: launch com.appstem.mammoth, it crashed -> add clearcallingid -> doesn't crash Change-Id: Ide87da8b8c13e8a10723f379bd4e4b386e5d35e4
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 1fc2dd5193e1..36697f9b6d60 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -1878,6 +1878,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
return false;
}
+ final long token = Binder.clearCallingIdentity();
try {
if (permName.equals(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
&& mPlatformCompat.isChangeEnabledByPackageName(BACKGROUND_RATIONALE_CHANGE_ID,
@@ -1886,6 +1887,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
} catch (RemoteException e) {
Log.e(TAG, "Unable to check if compatibility change is enabled.", e);
+ } finally {
+ Binder.restoreCallingIdentity(token);
}
return (flags & PackageManager.FLAG_PERMISSION_USER_SET) != 0;