summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-02-06 16:06:59 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-06 16:06:59 -0800
commitd2e6d4ad0ef559166200f27f2b3326212653ec65 (patch)
tree6993c68db8eeae15c0f4c1593a5a09579e3f1964
parent80ccf8c490504bf13adc7e5731a60f0646b3046a (diff)
parent57e446cfdc95fce61be986d98ffc81e8bb70504a (diff)
Merge "Add size check for IP config" into main
-rw-r--r--service/java/com/android/server/wifi/WifiConfigurationUtil.java38
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java24
2 files changed, 62 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigurationUtil.java b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
index 110bc627fd..612b7b4e59 100644
--- a/service/java/com/android/server/wifi/WifiConfigurationUtil.java
+++ b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
@@ -28,6 +28,7 @@ import static com.android.server.wifi.util.NativeUtil.addEnclosingQuotes;
import android.annotation.SuppressLint;
import android.net.IpConfiguration;
import android.net.MacAddress;
+import android.net.ProxyInfo;
import android.net.StaticIpConfiguration;
import android.net.wifi.SecurityParams;
import android.net.wifi.WifiConfiguration;
@@ -81,6 +82,7 @@ public class WifiConfigurationUtil {
private static final int WEP104_KEY_BYTES_LEN = 13;
private static final int WEP40_KEY_BYTES_LEN = 5;
private static final int MAX_STRING_LENGTH = 512;
+ private static final int MAX_ENTRY_SIZE = 100;
@VisibleForTesting
public static final String PASSWORD_MASK = "*";
@@ -732,6 +734,42 @@ public class WifiConfigurationUtil {
Log.e(TAG, "validateIpConfiguration failed: null static ip Address");
return false;
}
+ if (staticIpConfig.getDnsServers() != null
+ && staticIpConfig.getDnsServers().size() > MAX_ENTRY_SIZE) {
+ Log.e(TAG, "validateIpConfiguration failed: too many DNS server");
+ return false;
+ }
+ if (staticIpConfig.getDomains() != null
+ && staticIpConfig.getDomains().length() > MAX_STRING_LENGTH) {
+ Log.e(TAG, "validateIpConfiguration failed: domain name too long");
+ return false;
+ }
+ }
+ ProxyInfo proxyInfo = ipConfig.getHttpProxy();
+ if (proxyInfo != null) {
+ if (!proxyInfo.isValid()) {
+ Log.e(TAG, "validateIpConfiguration failed: invalid proxy info");
+ return false;
+ }
+ if (proxyInfo.getHost() != null
+ && proxyInfo.getHost().length() > MAX_STRING_LENGTH) {
+ Log.e(TAG, "validateIpConfiguration failed: host name too long");
+ return false;
+ }
+ if (proxyInfo.getExclusionList() != null) {
+ if (proxyInfo.getExclusionList().length > MAX_ENTRY_SIZE) {
+ Log.e(TAG, "validateIpConfiguration failed: too many entry in exclusion list");
+ return false;
+ }
+ int sum = 0;
+ for (String s : proxyInfo.getExclusionList()) {
+ sum += s.length();
+ if (sum > MAX_STRING_LENGTH) {
+ Log.e(TAG, "validateIpConfiguration failed: exclusion list size too large");
+ return false;
+ }
+ }
+ }
}
return true;
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
index f938371f5e..5aa28c451b 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.withSettings;
import android.content.pm.UserInfo;
import android.net.IpConfiguration;
import android.net.MacAddress;
+import android.net.ProxyInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.SecurityParams;
import android.net.wifi.WifiConfiguration;
@@ -1684,4 +1685,27 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
assertFalse(WifiConfigurationUtil.validate(pskConfig, SUPPORTED_FEATURES_ALL,
WifiConfigurationUtil.VALIDATE_FOR_ADD));
}
+
+ @Test
+ public void testInvalidStaticIpConfig() {
+ WifiConfiguration pskConfig = WifiConfigurationTestUtil.createPskNetwork();
+ IpConfiguration ipConfig =
+ WifiConfigurationTestUtil.createStaticIpConfigurationWithPacProxy();
+ ipConfig.getStaticIpConfiguration().domains = "a".repeat(513);
+ pskConfig.setIpConfiguration(ipConfig);
+ assertFalse(WifiConfigurationUtil.validate(pskConfig, SUPPORTED_FEATURES_ALL,
+ WifiConfigurationUtil.VALIDATE_FOR_ADD));
+ }
+ @Test
+ public void testInvalidProxyInfo() {
+ WifiConfiguration pskConfig = WifiConfigurationTestUtil.createPskNetwork();
+ IpConfiguration ipConfig =
+ WifiConfigurationTestUtil.createStaticIpConfigurationWithStaticProxy();
+ ProxyInfo proxyInfo = ProxyInfo.buildDirectProxy(ipConfig.getHttpProxy().getHost(),
+ ipConfig.getHttpProxy().getPort(), List.of("a".repeat(513)));
+ ipConfig.setHttpProxy(proxyInfo);
+ pskConfig.setIpConfiguration(ipConfig);
+ assertFalse(WifiConfigurationUtil.validate(pskConfig, SUPPORTED_FEATURES_ALL,
+ WifiConfigurationUtil.VALIDATE_FOR_ADD));
+ }
}