/bin/wifi: Fix a MAC parsing bug.
MAC addresses to be incremented were stored in an intermediate state
that lost leading zeroes.
Fixes b/34050122.
Change-Id: I7179824ada3034dfc573bf62316bde6cda4db53b
diff --git a/wifi/utils.py b/wifi/utils.py
index c3b237e..198bf16 100644
--- a/wifi/utils.py
+++ b/wifi/utils.py
@@ -120,8 +120,9 @@
def increment_mac_address(mac_address):
numeric_mac_address = int(''.join(mac_address.split(':')), 16) + 1
- return ':'.join(octet.encode('hex')
- for octet in ('%x' % numeric_mac_address).decode('hex'))
+ numeric_mac_address %= 2 ** 48
+ octets = ('%012x' % numeric_mac_address).decode('hex')
+ return ':'.join(octet.encode('hex') for octet in octets)
def get_filename(program, kind, disambiguator, tmp=False):
diff --git a/wifi/utils_test.py b/wifi/utils_test.py
index 0224605..8febea3 100755
--- a/wifi/utils_test.py
+++ b/wifi/utils_test.py
@@ -83,10 +83,20 @@
@wvtest.wvtest
def increment_mac_address_test():
- wvtest.WVPASSEQ('12:34:56:78:91',
- utils.increment_mac_address('12:34:56:78:90'))
- wvtest.WVPASSEQ('12:34:56:79:00',
- utils.increment_mac_address('12:34:56:78:FF'))
+ """Test increment_mac_address."""
+
+ wvtest.WVPASSEQ('12:34:56:78:90:13',
+ utils.increment_mac_address('12:34:56:78:90:12'))
+ wvtest.WVPASSEQ('12:34:56:78:91:00',
+ utils.increment_mac_address('12:34:56:78:90:FF'))
+
+ # b/34050122
+ wvtest.WVPASSEQ('00:0b:6b:ed:eb:ad',
+ utils.increment_mac_address('00:0b:6b:ed:eb:ac'))
+
+ # b/34050122 (initial misunderstanding of bug, but still worth testing)
+ wvtest.WVPASSEQ('00:00:00:00:00:00',
+ utils.increment_mac_address('ff:ff:ff:ff:ff:ff'))
@wvtest.wvtest