Merge "Stop using invalid URL to prevent unexpected crash" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
bc162dd714
@@ -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"));
|
||||||
|
|||||||
Reference in New Issue
Block a user