diff options
| author | 2015-05-26 14:46:22 -0700 | |
|---|---|---|
| committer | 2015-05-26 15:47:56 -0700 | |
| commit | 0507d6b850218066d3d4e66f18fb408789c06b5c (patch) | |
| tree | 2e26803f6cd53e431eb7d35912a7543c0c6601d7 | |
| parent | a04c7d400c7b9d39b56cec3d705eea39a767370e (diff) | |
Clear binder id after a permissions check before killing a UID.
bug:21035702
Change-Id: I2798d28780421720d85c5b49fa28897aa6c76d97
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b111b36276aa..cea54a6819e8 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -11045,9 +11045,15 @@ public final class ActivityManagerService extends ActivityManagerNative public void killUid(int uid, String reason) { enforceCallingPermission(Manifest.permission.KILL_UID, "killUid"); synchronized (this) { - killPackageProcessesLocked(null, UserHandle.getAppId(uid), UserHandle.getUserId(uid), - ProcessList.FOREGROUND_APP_ADJ-1, false, true, true, false, - reason != null ? reason : "kill uid"); + final long identity = Binder.clearCallingIdentity(); + try { + killPackageProcessesLocked(null, UserHandle.getAppId(uid), + UserHandle.getUserId(uid), + ProcessList.PERSISTENT_PROC_ADJ, false, true, true, true, + reason != null ? reason : "kill uid"); + } finally { + Binder.restoreCallingIdentity(identity); + } } } |