From 2a4ac4e5ef2a755e74f62a2974c6069a87520d05 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 12 Feb 2016 12:43:15 -0800 Subject: [PATCH] Use hasInternetPermission method Followup to Bug: 27165396 Change-Id: Ibdf6f5dd15197d4e19d7c7729612c13a02cdbf2b --- .../server/net/NetworkPolicyManagerService.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index a102615f6411f..426ce41298e75 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -339,6 +339,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private final AppOpsManager mAppOps; private final MyPackageMonitor mPackageMonitor; + private final IPackageManager mIPm; + // TODO: keep whitelist of system-critical services that should never have // rules enforced, such as system, phone, and radio UIDs. @@ -369,6 +371,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { Context.DEVICE_IDLE_CONTROLLER)); mTime = checkNotNull(time, "missing TrustedTime"); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + mIPm = AppGlobals.getPackageManager(); HandlerThread thread = new HandlerThread(TAG); thread.start(); @@ -2335,14 +2338,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // quick check: if this uid doesn't have INTERNET permission, it // doesn't have network access anyway, so it is a waste to mess // with it here. - try { - if (ipm.checkUidPermission(Manifest.permission.INTERNET, uid) - != PackageManager.PERMISSION_GRANTED) { - continue; - } - } catch (RemoteException e) { + if (hasInternetPermissions(uid)) { + uidRules.put(uid, FIREWALL_RULE_DENY); } - uidRules.put(uid, FIREWALL_RULE_DENY); } } } @@ -2451,9 +2449,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Useful for the cases where the lack of network access can simplify the rules. */ private boolean hasInternetPermissions(int uid) { - final IPackageManager ipm = AppGlobals.getPackageManager(); try { - if (ipm.checkUidPermission(Manifest.permission.INTERNET, uid) + if (mIPm.checkUidPermission(Manifest.permission.INTERNET, uid) != PackageManager.PERMISSION_GRANTED) { return false; }