Merge tag 'android-security-10.0.0_r54' into int/10/fp2
Android Security 10.0.0 Release 54 (7250004)
* tag 'android-security-10.0.0_r54':
Use EUI64 IPv6 link-local address generation only when randomizing MAC
Change-Id: Ia1934b4e5213301432df513fc984fe20687143d2
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 5cf9096..eb7a1fd 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -5353,12 +5353,17 @@
final WifiConfiguration currentConfig = getCurrentWifiConfiguration();
final boolean isUsingStaticIp =
(currentConfig.getIpAssignment() == IpConfiguration.IpAssignment.STATIC);
+ final boolean isUsingMacRandomization =
+ currentConfig.macRandomizationSetting
+ == WifiConfiguration.RANDOMIZATION_PERSISTENT
+ && isConnectedMacRandomizationEnabled();
if (mVerboseLoggingEnabled) {
final String key = currentConfig.configKey();
log("enter ObtainingIpState netId=" + Integer.toString(mLastNetworkId)
+ " " + key + " "
+ " roam=" + mIsAutoRoaming
- + " static=" + isUsingStaticIp);
+ + " static=" + isUsingStaticIp
+ + " randomMac=" + isUsingMacRandomization);
}
// Send event to CM & network change broadcast
@@ -5387,25 +5392,26 @@
mIpClient.setTcpBufferSizes(mTcpBufferSizes);
}
}
- final ProvisioningConfiguration prov;
+ final ProvisioningConfiguration.Builder prov;
if (!isUsingStaticIp) {
prov = new ProvisioningConfiguration.Builder()
.withPreDhcpAction()
.withApfCapabilities(mWifiNative.getApfCapabilities(mInterfaceName))
.withNetwork(getCurrentNetwork())
- .withDisplayName(currentConfig.SSID)
- .build();
+ .withDisplayName(currentConfig.SSID);
+ if (isUsingMacRandomization) {
+ prov.withRandomMacAddress();
+ }
} else {
StaticIpConfiguration staticIpConfig = currentConfig.getStaticIpConfiguration();
prov = new ProvisioningConfiguration.Builder()
.withStaticConfiguration(staticIpConfig)
.withApfCapabilities(mWifiNative.getApfCapabilities(mInterfaceName))
.withNetwork(getCurrentNetwork())
- .withDisplayName(currentConfig.SSID)
- .build();
+ .withDisplayName(currentConfig.SSID);
}
if (mIpClient != null) {
- mIpClient.startProvisioning(prov);
+ mIpClient.startProvisioning(prov.build());
}
// Get Link layer stats so as we get fresh tx packet counters
getWifiLinkLayerStats();