Merge "Change permissions checks for setAirplaneMode." am: 38149e3ea7
am: 65b71e6a20
Change-Id: Ibe5bbd51adae83e1bfb5a4ab43d29eb2ccd02a8b
This commit is contained in:
@@ -2731,7 +2731,10 @@ public class ConnectivityManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
|
||||
@RequiresPermission(anyOf = {
|
||||
android.Manifest.permission.NETWORK_SETTINGS,
|
||||
android.Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||
android.Manifest.permission.NETWORK_STACK})
|
||||
@SystemApi
|
||||
public void setAirplaneMode(boolean enable) {
|
||||
try {
|
||||
|
||||
@@ -1679,6 +1679,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
"ConnectivityService");
|
||||
}
|
||||
|
||||
private void enforceAnyPermissionOf(String... permissions) {
|
||||
for (String permission : permissions) {
|
||||
if (mContext.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new SecurityException(
|
||||
"Requires one of the following permissions: " + String.join(", ", permissions) + ".");
|
||||
}
|
||||
|
||||
private void enforceInternetPermission() {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.INTERNET,
|
||||
@@ -1723,6 +1733,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
"ConnectivityService");
|
||||
}
|
||||
|
||||
private void enforceNetworkStackSettingsOrSetup() {
|
||||
enforceAnyPermissionOf(
|
||||
android.Manifest.permission.NETWORK_SETTINGS,
|
||||
android.Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||
android.Manifest.permission.NETWORK_STACK);
|
||||
}
|
||||
|
||||
private boolean checkNetworkStackPermission() {
|
||||
return PERMISSION_GRANTED == mContext.checkCallingOrSelfPermission(
|
||||
android.Manifest.permission.NETWORK_STACK);
|
||||
@@ -3984,7 +4001,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
@Override
|
||||
public void setAirplaneMode(boolean enable) {
|
||||
enforceConnectivityInternalPermission();
|
||||
enforceNetworkStackSettingsOrSetup();
|
||||
final long ident = Binder.clearCallingIdentity();
|
||||
try {
|
||||
final ContentResolver cr = mContext.getContentResolver();
|
||||
|
||||
Reference in New Issue
Block a user