diff options
author | Sudheer Shanka <sudheersai@google.com> | 2020-10-02 18:44:43 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-10-02 18:44:43 +0000 |
commit | 467128aef528e1314f144d4e1d3be58202723f30 (patch) | |
tree | f8ddc19c3cfd8a94eb02162b92350a91fde0690b | |
parent | 530bebf0302fece760126a34b47a6b64ddcbde8e (diff) | |
parent | 97c29c74766cd6bee5d36792e52ba769b77b1406 (diff) | |
download | base-467128aef528e1314f144d4e1d3be58202723f30.tar.gz |
Merge "Update INTERNET perm state cache to use uids instead of appIds." into rvc-qpr-dev
-rw-r--r-- | services/core/java/com/android/server/net/NetworkPolicyManagerService.java | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index b3eb53116d49..ffa518e266d9 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -586,7 +586,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private final NetworkPolicyLogger mLogger = new NetworkPolicyLogger(); - /** List of apps indexed by appId and whether they have the internet permission */ + /** List of apps indexed by uid and whether they have the internet permission */ @GuardedBy("mUidRulesFirstLock") private final SparseBooleanArray mInternetPermissionMap = new SparseBooleanArray(); @@ -972,7 +972,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { if (LOGV) Slog.v(TAG, "ACTION_PACKAGE_ADDED for uid=" + uid); // Clear the cache for the app synchronized (mUidRulesFirstLock) { - mInternetPermissionMap.delete(UserHandle.getAppId(uid)); + mInternetPermissionMap.delete(uid); updateRestrictionRulesForUidUL(uid); } } @@ -4194,16 +4194,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { @GuardedBy("mUidRulesFirstLock") private boolean hasInternetPermissionUL(int uid) { try { - final int appId = UserHandle.getAppId(uid); - final boolean hasPermission; - if (mInternetPermissionMap.indexOfKey(appId) < 0) { - hasPermission = - mIPm.checkUidPermission(Manifest.permission.INTERNET, uid) - == PackageManager.PERMISSION_GRANTED; - mInternetPermissionMap.put(appId, hasPermission); - } else { - hasPermission = mInternetPermissionMap.get(appId); + if (mInternetPermissionMap.get(uid)) { + return true; } + // If the cache shows that uid doesn't have internet permission, + // then always re-check with PackageManager just to be safe. + final boolean hasPermission = mIPm.checkUidPermission(Manifest.permission.INTERNET, + uid) == PackageManager.PERMISSION_GRANTED; + mInternetPermissionMap.put(uid, hasPermission); return hasPermission; } catch (RemoteException e) { } |