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();