Merge "@EnforcePermission migrations - NetworkPolicyManagerService"

This commit is contained in:
Treehugger Robot
2023-05-03 01:13:03 +00:00
committed by Android (Google) Code Review
2 changed files with 43 additions and 14 deletions

View File

@@ -30,29 +30,38 @@ import android.telephony.SubscriptionPlan;
interface INetworkPolicyManager {
/** Control UID policies. */
@EnforcePermission("MANAGE_NETWORK_POLICY")
@UnsupportedAppUsage
void setUidPolicy(int uid, int policy);
@EnforcePermission("MANAGE_NETWORK_POLICY")
void addUidPolicy(int uid, int policy);
@EnforcePermission("MANAGE_NETWORK_POLICY")
void removeUidPolicy(int uid, int policy);
@EnforcePermission("MANAGE_NETWORK_POLICY")
@UnsupportedAppUsage
int getUidPolicy(int uid);
@EnforcePermission("MANAGE_NETWORK_POLICY")
int[] getUidsWithPolicy(int policy);
void registerListener(INetworkPolicyListener listener);
void unregisterListener(INetworkPolicyListener listener);
/** Control network policies atomically. */
@EnforcePermission("MANAGE_NETWORK_POLICY")
@UnsupportedAppUsage
void setNetworkPolicies(in NetworkPolicy[] policies);
@EnforcePermission("MANAGE_NETWORK_POLICY")
NetworkPolicy[] getNetworkPolicies(String callingPackage);
/** Snooze limit on policy matching given template. */
@EnforcePermission("MANAGE_NETWORK_POLICY")
@UnsupportedAppUsage
void snoozeLimit(in NetworkTemplate template);
/** Control if background data is restricted system-wide. */
@UnsupportedAppUsage
void setRestrictBackground(boolean restrictBackground);
@EnforcePermission("MANAGE_NETWORK_POLICY")
@UnsupportedAppUsage
boolean getRestrictBackground();
@@ -61,10 +70,13 @@ interface INetworkPolicyManager {
2 - whitelisted
3 - enabled
*/
@EnforcePermission("ACCESS_NETWORK_STATE")
int getRestrictBackgroundByCaller();
int getRestrictBackgroundStatus(int uid);
@EnforcePermission("MANAGE_NETWORK_POLICY")
void setDeviceIdleMode(boolean enabled);
@EnforcePermission("MANAGE_NETWORK_POLICY")
void setWifiMeteredOverride(String networkId, int meteredOverride);
int getMultipathPreference(in Network network);
@@ -76,8 +88,10 @@ interface INetworkPolicyManager {
String getSubscriptionPlansOwner(int subId);
void setSubscriptionOverride(int subId, int overrideMask, int overrideValue, in int[] networkTypes, long expirationDurationMillis, String callingPackage);
@EnforcePermission("NETWORK_SETTINGS")
void factoryReset(String subscriber);
boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork);
@EnforcePermission("OBSERVE_NETWORK_POLICY")
boolean isUidRestrictedOnMeteredNetworks(int uid);
}

View File

@@ -141,6 +141,7 @@ import static org.xmlpull.v1.XmlPullParser.END_TAG;
import static org.xmlpull.v1.XmlPullParser.START_TAG;
import android.Manifest;
import android.annotation.EnforcePermission;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -2842,9 +2843,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void setUidPolicy(int uid, int policy) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
setUidPolicy_enforcePermission();
if (!UserHandle.isApp(uid)) {
throw new IllegalArgumentException("cannot apply policy to UID " + uid);
@@ -2863,9 +2865,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void addUidPolicy(int uid, int policy) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
addUidPolicy_enforcePermission();
if (!UserHandle.isApp(uid)) {
throw new IllegalArgumentException("cannot apply policy to UID " + uid);
@@ -2881,9 +2884,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void removeUidPolicy(int uid, int policy) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
removeUidPolicy_enforcePermission();
if (!UserHandle.isApp(uid)) {
throw new IllegalArgumentException("cannot apply policy to UID " + uid);
@@ -2948,18 +2952,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public int getUidPolicy(int uid) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
getUidPolicy_enforcePermission();
synchronized (mUidRulesFirstLock) {
return mUidPolicy.get(uid, POLICY_NONE);
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public int[] getUidsWithPolicy(int policy) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
getUidsWithPolicy_enforcePermission();
int[] uids = new int[0];
synchronized (mUidRulesFirstLock) {
@@ -3055,9 +3061,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
mListeners.unregister(listener);
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void setNetworkPolicies(NetworkPolicy[] policies) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
setNetworkPolicies_enforcePermission();
final long token = Binder.clearCallingIdentity();
try {
@@ -3078,9 +3085,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
setNetworkPolicies(policies);
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public NetworkPolicy[] getNetworkPolicies(String callingPackage) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
getNetworkPolicies_enforcePermission();
try {
mContext.enforceCallingOrSelfPermission(READ_PRIVILEGED_PHONE_STATE, TAG);
// SKIP checking run-time OP_READ_PHONE_STATE since caller or self has PRIVILEGED
@@ -3176,9 +3184,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
return template;
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void snoozeLimit(NetworkTemplate template) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
snoozeLimit_enforcePermission();
final long token = Binder.clearCallingIdentity();
try {
@@ -3286,9 +3295,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
.sendToTarget();
}
@EnforcePermission(ACCESS_NETWORK_STATE)
@Override
public int getRestrictBackgroundByCaller() {
mContext.enforceCallingOrSelfPermission(ACCESS_NETWORK_STATE, TAG);
getRestrictBackgroundByCaller_enforcePermission();
return getRestrictBackgroundStatusInternal(Binder.getCallingUid());
}
@@ -3321,18 +3331,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public boolean getRestrictBackground() {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
getRestrictBackground_enforcePermission();
synchronized (mUidRulesFirstLock) {
return mRestrictBackground;
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void setDeviceIdleMode(boolean enabled) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
setDeviceIdleMode_enforcePermission();
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setDeviceIdleMode");
try {
synchronized (mUidRulesFirstLock) {
@@ -3357,9 +3369,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(MANAGE_NETWORK_POLICY)
@Override
public void setWifiMeteredOverride(String networkId, int meteredOverride) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
setWifiMeteredOverride_enforcePermission();
final long token = Binder.clearCallingIdentity();
try {
final WifiManager wm = mContext.getSystemService(WifiManager.class);
@@ -5967,9 +5980,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
@EnforcePermission(NETWORK_SETTINGS)
@Override
public void factoryReset(String subscriber) {
mContext.enforceCallingOrSelfPermission(NETWORK_SETTINGS, TAG);
factoryReset_enforcePermission();
if (mUserManager.hasUserRestriction(UserManager.DISALLOW_NETWORK_RESET)) {
return;
@@ -6028,9 +6042,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
return blockedReasons != BLOCKED_REASON_NONE;
}
@EnforcePermission(OBSERVE_NETWORK_POLICY)
@Override
public boolean isUidRestrictedOnMeteredNetworks(int uid) {
mContext.enforceCallingOrSelfPermission(OBSERVE_NETWORK_POLICY, TAG);
isUidRestrictedOnMeteredNetworks_enforcePermission();
synchronized (mUidBlockedState) {
final UidBlockedState uidBlockedState = mUidBlockedState.get(uid);
int blockedReasons = uidBlockedState == null