Use unified Tethering Permission Check

The BT and Wifi mechanisms for enabling Tethering did their own
permission checks.  This set of changes unifies the check into
a ConnectivityManager function so they can be kept in sync.

bug:17435527
Change-Id: I8c157a5acf56ffbddd349cb6a45160ae7be8541b
This commit is contained in:
Robert Greenwalt
2014-09-16 17:54:19 -07:00
parent 9d294201bf
commit 3c5dee0a26
2 changed files with 17 additions and 11 deletions

View File

@@ -1402,6 +1402,20 @@ public class ConnectivityManager {
return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
/** {@hide */
public static final void enforceTetherChangePermission(Context context) {
if (context.getResources().getStringArray(
com.android.internal.R.array.config_mobile_hotspot_provision_app).length == 2) {
// Have a provisioning app - must only let system apps (which check this app)
// turn on tethering
context.enforceCallingOrSelfPermission(
android.Manifest.permission.CONNECTIVITY_INTERNAL, "ConnectivityService");
} else {
context.enforceCallingOrSelfPermission(
android.Manifest.permission.CHANGE_NETWORK_STATE, "ConnectivityService");
}
}
/**
* Get the set of tetherable, available interfaces. This list is limited by
* device configuration and current interface existence.

View File

@@ -1357,13 +1357,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
"ConnectivityService");
}
// TODO Make this a special check when it goes public
private void enforceTetherChangePermission() {
mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.CHANGE_NETWORK_STATE,
"ConnectivityService");
}
private void enforceTetherAccessPermission() {
mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.ACCESS_NETWORK_STATE,
@@ -2375,8 +2368,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// javadoc from interface
public int tether(String iface) {
enforceTetherChangePermission();
ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) {
return mTethering.tether(iface);
} else {
@@ -2386,7 +2378,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// javadoc from interface
public int untether(String iface) {
enforceTetherChangePermission();
ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) {
return mTethering.untether(iface);
@@ -2435,7 +2427,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
public int setUsbTethering(boolean enable) {
enforceTetherChangePermission();
ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) {
return mTethering.setUsbTethering(enable);
} else {