From ae3ccfd07e149d56c8ed3ce3faf7d89fd434f235 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Tue, 22 Mar 2011 17:19:05 -0700 Subject: [PATCH] Fix ANR with bypass proxy regex Bug: 4148297 Change-Id: I5519ed297acabb65e1992c65e4b4110380983bb1 --- src/com/android/settings/ProxySelector.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/ProxySelector.java b/src/com/android/settings/ProxySelector.java index bdb32e3c0e6..909496eaefa 100644 --- a/src/com/android/settings/ProxySelector.java +++ b/src/com/android/settings/ProxySelector.java @@ -62,13 +62,12 @@ public class ProxySelector extends Fragment implements DialogCreatable { private static final String HOSTNAME_REGEXP = "^$|^[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*(\\.[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*)*$"; private static final Pattern HOSTNAME_PATTERN; - private static final String EXCLLIST_REGEXP = - "$|^(.?[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*(\\.[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*)*)+" + - "(,(.?[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*(\\.[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*)*))*$"; - private static final Pattern EXCLLIST_PATTERN; + private static final String EXCLUSION_REGEXP = + "$|^(.?[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*(\\.[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*)*)+$"; + private static final Pattern EXCLUSION_PATTERN; static { HOSTNAME_PATTERN = Pattern.compile(HOSTNAME_REGEXP); - EXCLLIST_PATTERN = Pattern.compile(EXCLLIST_REGEXP); + EXCLUSION_PATTERN = Pattern.compile(EXCLUSION_REGEXP); } private static final int ERROR_DIALOG_ID = 0; @@ -201,11 +200,14 @@ public class ProxySelector extends Fragment implements DialogCreatable { */ public static int validate(String hostname, String port, String exclList) { Matcher match = HOSTNAME_PATTERN.matcher(hostname); - Matcher listMatch = EXCLLIST_PATTERN.matcher(exclList); + String exclListArray[] = exclList.split(","); if (!match.matches()) return R.string.proxy_error_invalid_host; - if (!listMatch.matches()) return R.string.proxy_error_invalid_exclusion_list; + for (String excl : exclListArray) { + Matcher m = EXCLUSION_PATTERN.matcher(excl); + if (!m.matches()) return R.string.proxy_error_invalid_exclusion_list; + } if (hostname.length() > 0 && port.length() == 0) { return R.string.proxy_error_empty_port;