Ignore system apps on enforceMeteredApnPolicy().

BUG: 29514913
Fixes: 29448383
Change-Id: I19eb004c937e1c872bbf82caa7a919e43d48a259
This commit is contained in:
Felipe Leme
2016-06-20 16:36:29 -07:00
parent c32921dcda
commit 0a5ae42e45

View File

@@ -30,8 +30,6 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS;
import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS;
import static android.net.NetworkPolicyManager.RULE_NONE;
import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
@@ -921,7 +919,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// Networks aren't blocked when ignoring blocked status
if (ignoreBlocked) return false;
// Networks are never blocked for system services
if (uid < Process.FIRST_APPLICATION_UID) return false;
if (isSystem(uid)) return false;
final boolean networkMetered;
final int uidRules;
@@ -4032,12 +4030,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
return false;
}
private boolean isSystem(int uid) {
return uid < Process.FIRST_APPLICATION_UID;
}
private void enforceMeteredApnPolicy(NetworkCapabilities networkCapabilities) {
final int uid = Binder.getCallingUid();
if (isSystem(uid)) {
return;
}
// if UID is restricted, don't allow them to bring up metered APNs
if (networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) == false) {
final int uidRules;
final int uid = Binder.getCallingUid();
synchronized(mRulesLock) {
uidRules = mUidRules.get(uid, RULE_ALLOW_ALL);
}