diff options
| author | Remi NGUYEN VAN <reminv@google.com> | 2021-01-25 04:41:24 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-01-25 04:41:24 +0000 |
| commit | be34fb2ce67f5aff264d441d0ae7e32cd73ec5c9 (patch) | |
| tree | 8d3cb03a2f53c60b8c8b8eb6aec7c1052b137d82 | |
| parent | 46c67f78b428a205cd821c2e7b3bb6e15f1963af (diff) | |
| parent | 1065160b6c73fdaed5392b8dc3a8b99226a9406f (diff) | |
Merge "Remove hidden API usage of Proxy.validate" am: a4a9e9bbc8 am: 1065160b6c
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1552497
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Id19b29b7140eeaa4d51821045f1b4549719b482c
| -rw-r--r-- | core/java/android/app/admin/DevicePolicyManager.java | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 56d091da22f1..d1f8ca578e99 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -85,6 +85,7 @@ import android.security.keystore.StrongBoxUnavailableException; import android.service.restrictions.RestrictionsReceiver; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; +import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.util.Pair; @@ -4554,29 +4555,23 @@ public class DevicePolicyManager { InetSocketAddress sa = (InetSocketAddress) proxySpec.address(); String hostName = sa.getHostName(); int port = sa.getPort(); - StringBuilder hostBuilder = new StringBuilder(); - final String hostSpec = hostBuilder.append(hostName) - .append(":").append(Integer.toString(port)).toString(); - final String exclSpec; + final List<String> trimmedExclList; if (exclusionList == null) { - exclSpec = ""; + trimmedExclList = Collections.emptyList(); } else { - StringBuilder listBuilder = new StringBuilder(); - boolean firstDomain = true; + trimmedExclList = new ArrayList<>(exclusionList.size()); for (String exclDomain : exclusionList) { - if (!firstDomain) { - listBuilder = listBuilder.append(","); - } else { - firstDomain = false; - } - listBuilder = listBuilder.append(exclDomain.trim()); + trimmedExclList.add(exclDomain.trim()); } - exclSpec = listBuilder.toString(); } - if (android.net.Proxy.validate(hostName, Integer.toString(port), exclSpec) - != android.net.Proxy.PROXY_VALID) throw new IllegalArgumentException(); + final ProxyInfo info = ProxyInfo.buildDirectProxy(hostName, port, trimmedExclList); + // The hostSpec is built assuming that there is a specified port and hostname, + // but ProxyInfo.isValid() accepts 0 / empty as unspecified: also reject them. + if (port == 0 || TextUtils.isEmpty(hostName) || !info.isValid()) { + throw new IllegalArgumentException(); + } - return new Pair<>(hostSpec, exclSpec); + return new Pair<>(hostName + ":" + port, TextUtils.join(",", trimmedExclList)); } /** |
