From b3b4ff616fa7f6f9190a99e21537e82596e1805c Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Thu, 25 Apr 2019 11:42:28 -0700 Subject: [PATCH] get_iface_from_hwaddr: be more careful about hwaddr (#1703152) From https://bugzilla.redhat.com/show_bug.cgi?id=1703152 it seems clear that in at least some case, we can get `None` from `device.get_hw_address` or `device.get_permanent_hw_address`. This falls back from permanent to non-permanent if the return from permanent is None (or other false-y value), and protects against the value still being None even with that fallback by checking address's truthiness before trying to call `upper` on it. That should make it impossible for this to blow up in the same way. Signed-off-by: Adam Williamson --- pyanaconda/modules/network/nm_client.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pyanaconda/modules/network/nm_client.py b/pyanaconda/modules/network/nm_client.py index ec6336c30..17b98d105 100644 --- a/pyanaconda/modules/network/nm_client.py +++ b/pyanaconda/modules/network/nm_client.py @@ -58,12 +58,16 @@ def get_iface_from_hwaddr(nm_client, hwaddr): NM.DeviceType.WIFI): try: address = device.get_permanent_hw_address() + if not address: + address = device.get_hw_address() except AttributeError as e: log.warning("Device %s: %s", device.get_iface(), e) address = device.get_hw_address() else: address = device.get_hw_address() - if address.upper() == hwaddr.upper(): + # per #1703152, at least in *some* case, we wind up with + # address as None here, so we need to guard against that + if address and address.upper() == hwaddr.upper(): return device.get_iface() return None -- 2.21.0