Merge changes from topic "cherrypicker-L08900000954891083:N79200001270491487" into sc-qpr1-dev

* changes:
  [automerge] Stop using invalid URL to prevent unexpected crash 2p: fe57c5bf89
  Stop using invalid URL to prevent unexpected crash
This commit is contained in:
Chiachang Wang
2022-06-08 01:30:27 +00:00
committed by Android (Google) Code Review

View File

@@ -44,6 +44,7 @@ import android.os.SystemClock;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import android.util.Log;
import android.webkit.URLUtil;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.TrafficStatsConstants; import com.android.internal.util.TrafficStatsConstants;
@@ -232,8 +233,22 @@ public class PacProxyService extends IPacProxyManager.Stub {
* @throws IOException if the URL is malformed, or the PAC file is too big. * @throws IOException if the URL is malformed, or the PAC file is too big.
*/ */
private static String get(Uri pacUri) throws IOException { private static String get(Uri pacUri) throws IOException {
URL url = new URL(pacUri.toString()); if (!URLUtil.isValidUrl(pacUri.toString())) {
URLConnection urlConnection = url.openConnection(java.net.Proxy.NO_PROXY); throw new IOException("Malformed URL:" + pacUri);
}
final URL url = new URL(pacUri.toString());
URLConnection urlConnection;
try {
urlConnection = url.openConnection(java.net.Proxy.NO_PROXY);
// Catch the possible exceptions and rethrow as IOException to not to crash the system
// for illegal input.
} catch (IllegalArgumentException e) {
throw new IOException("Incorrect proxy type for " + pacUri);
} catch (UnsupportedOperationException e) {
throw new IOException("Unsupported URL connection type for " + pacUri);
}
long contentLength = -1; long contentLength = -1;
try { try {
contentLength = Long.parseLong(urlConnection.getHeaderField("Content-Length")); contentLength = Long.parseLong(urlConnection.getHeaderField("Content-Length"));