summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi NGUYEN VAN <reminv@google.com>2021-01-25 04:41:24 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-01-25 04:41:24 +0000
commitbe34fb2ce67f5aff264d441d0ae7e32cd73ec5c9 (patch)
tree8d3cb03a2f53c60b8c8b8eb6aec7c1052b137d82
parent46c67f78b428a205cd821c2e7b3bb6e15f1963af (diff)
parent1065160b6c73fdaed5392b8dc3a8b99226a9406f (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.java29
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));
}
/**