diff options
| author | 2019-08-23 02:24:15 -0700 | |
|---|---|---|
| committer | 2019-08-23 02:24:15 -0700 | |
| commit | 65a98b4002a13f96cc0a5ac15f6058e68e5bce65 (patch) | |
| tree | 12327564f4de4cfe1114e257e878902e589c7cbb | |
| parent | 3f1d5d92fcac77fa748299f1783c4e212d63b363 (diff) | |
| parent | e5d5b73109dd0ace85eb4e6b543cea30cd6a7385 (diff) | |
Merge "avoid generating reserved local MACs"
am: e5d5b73109
Change-Id: Ia6d0eb0c5e8101d9c4b4bc63de79157f7d1c2284
| -rw-r--r-- | core/java/android/net/MacAddress.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/core/java/android/net/MacAddress.java b/core/java/android/net/MacAddress.java index aa8e01046a01..a809b28c9204 100644 --- a/core/java/android/net/MacAddress.java +++ b/core/java/android/net/MacAddress.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UnsupportedAppUsage; +import android.net.wifi.WifiInfo; import android.os.Parcel; import android.os.Parcelable; @@ -364,7 +365,12 @@ public final class MacAddress implements Parcelable { long addr = r.nextLong() & VALID_LONG_MASK; addr |= LOCALLY_ASSIGNED_MASK; addr &= ~MULTICAST_MASK; - return new MacAddress(addr); + MacAddress mac = new MacAddress(addr); + // WifiInfo.DEFAULT_MAC_ADDRESS is being used for another purpose, so do not use it here. + if (mac.toString().equals(WifiInfo.DEFAULT_MAC_ADDRESS)) { + return createRandomUnicastAddress(); + } + return mac; } /** @@ -383,7 +389,12 @@ public final class MacAddress implements Parcelable { long addr = (base.mAddr & OUI_MASK) | (NIC_MASK & r.nextLong()); addr |= LOCALLY_ASSIGNED_MASK; addr &= ~MULTICAST_MASK; - return new MacAddress(addr); + MacAddress mac = new MacAddress(addr); + // WifiInfo.DEFAULT_MAC_ADDRESS is being used for another purpose, so do not use it here. + if (mac.toString().equals(WifiInfo.DEFAULT_MAC_ADDRESS)) { + return createRandomUnicastAddress(base, r); + } + return mac; } // Convenience function for working around the lack of byte literals. |