Merge "Use unified Tethering Permission Check" into lmp-dev

This commit is contained in:
Robert Greenwalt
2014-09-18 00:02:15 +00:00
committed by Android (Google) Code Review
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); 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 * Get the set of tetherable, available interfaces. This list is limited by
* device configuration and current interface existence. * device configuration and current interface existence.

View File

@@ -1357,13 +1357,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
"ConnectivityService"); "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() { private void enforceTetherAccessPermission() {
mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.ACCESS_NETWORK_STATE,
@@ -2389,8 +2382,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// javadoc from interface // javadoc from interface
public int tether(String iface) { public int tether(String iface) {
enforceTetherChangePermission(); ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) { if (isTetheringSupported()) {
return mTethering.tether(iface); return mTethering.tether(iface);
} else { } else {
@@ -2400,7 +2392,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
// javadoc from interface // javadoc from interface
public int untether(String iface) { public int untether(String iface) {
enforceTetherChangePermission(); ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) { if (isTetheringSupported()) {
return mTethering.untether(iface); return mTethering.untether(iface);
@@ -2449,7 +2441,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
public int setUsbTethering(boolean enable) { public int setUsbTethering(boolean enable) {
enforceTetherChangePermission(); ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) { if (isTetheringSupported()) {
return mTethering.setUsbTethering(enable); return mTethering.setUsbTethering(enable);
} else { } else {