From a9262a0be46091ad6e2073945d39070ffb6a722b Mon Sep 17 00:00:00 2001 From: shafik Date: Tue, 30 Jun 2020 21:29:10 +0100 Subject: [PATCH] Always kill app when M_E_S is denied StorageManagerService gets notified that MANAGE_EXTERNAL_STORAGE was denied from AppOpsService#setUidMode, which means that we can't get the package name. However, SMS only kills the app if it has the package name. This is unnecessary since we use ActivityManager#killUid. This change removes the conditions that package name should be provided in order for SMS to kill the app. Test: manual - check bug Fix: 160253075 Change-Id: I0a411cf5224714c09744ffd3ade14267024efb67 --- .../com/android/server/StorageManagerService.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 6e8eca3f46cf1..678387c540edc 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -4736,7 +4736,7 @@ class StorageManagerService extends IStorageManager.Stub return true; } - private void killAppForOpChange(int code, int uid, String packageName) { + private void killAppForOpChange(int code, int uid) { final IActivityManager am = ActivityManager.getService(); try { am.killUid(UserHandle.getAppId(uid), UserHandle.USER_ALL, @@ -4753,7 +4753,7 @@ class StorageManagerService extends IStorageManager.Stub switch(code) { case OP_REQUEST_INSTALL_PACKAGES: // Always kill regardless of op change, to remount apps /storage - killAppForOpChange(code, uid, packageName); + killAppForOpChange(code, uid); return; case OP_MANAGE_EXTERNAL_STORAGE: if (mode != MODE_ALLOWED) { @@ -4762,12 +4762,7 @@ class StorageManagerService extends IStorageManager.Stub // results in a bad UX, especially since the gid only gives access // to unreliable volumes, USB OTGs that are rarely mounted. The app // will get the external_storage gid on next organic restart. - if (packageName != null) { - killAppForOpChange(code, uid, packageName); - } else { - // TODO(b/158283222) this can happen, figure out if we need - // to kill in this case as well. - } + killAppForOpChange(code, uid); } return; case OP_LEGACY_STORAGE: