From 6477bd0519ae7e66456a37e6774032198a9fbe61 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Wed, 10 Apr 2013 15:32:18 -0700 Subject: [PATCH] Use CONNECTIVITY_INTERNAL for global proxy The Global http proxy shouldn't be used by apps, but can be useful in certain conditions. bug:8264794 bug:8557674 Change-Id: Ia3cbe542e448d9e74d0492626a13e9fd34ad797a --- core/java/android/net/ConnectivityManager.java | 2 +- .../com/android/server/ConnectivityService.java | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 4e4980d557..78bf9afcbb 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -1136,7 +1136,7 @@ public class ConnectivityManager { * HTTP proxy. A {@code null} value will clear the global HTTP proxy. * *

This method requires the call to hold the permission - * {@link android.Manifest.permission#CHANGE_NETWORK_STATE}. + * {@link android.Manifest.permission#CONNECTIVITY_INTERNAL}. * {@hide} */ public void setGlobalProxy(ProxyProperties p) { diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index ffc36723eb..9adf945bd8 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -3045,7 +3045,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } public void setGlobalProxy(ProxyProperties proxyProperties) { - enforceChangePermission(); + enforceConnectivityInternalPermission(); synchronized (mProxyLock) { if (proxyProperties == mGlobalProxy) return; if (proxyProperties != null && proxyProperties.equals(mGlobalProxy)) return; @@ -3063,10 +3063,15 @@ public class ConnectivityService extends IConnectivityManager.Stub { mGlobalProxy = null; } ContentResolver res = mContext.getContentResolver(); - Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_HOST, host); - Settings.Global.putInt(res, Settings.Global.GLOBAL_HTTP_PROXY_PORT, port); - Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST, - exclList); + final long token = Binder.clearCallingIdentity(); + try { + Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_HOST, host); + Settings.Global.putInt(res, Settings.Global.GLOBAL_HTTP_PROXY_PORT, port); + Settings.Global.putString(res, Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST, + exclList); + } finally { + Binder.restoreCallingIdentity(token); + } } if (mGlobalProxy == null) {