From 2733aacd6495f2bdba81ddda617c9a506abd9e73 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 17 Sep 2015 19:53:56 +0200 Subject: [PATCH] platform: don't accept 00:00:00:00:00:00 as valid permanent address In nmp_utils_ethtool_get_permanent_address(), don' accept a permanent address of all zeros. https://bugzilla.redhat.com/show_bug.cgi?id=1264024 --- src/platform/nm-platform-utils.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/platform/nm-platform-utils.c b/src/platform/nm-platform-utils.c index f672b3ec21..3ebb73bfb9 100644 --- a/src/platform/nm-platform-utils.c +++ b/src/platform/nm-platform-utils.c @@ -142,6 +142,7 @@ nmp_utils_ethtool_get_permanent_address (const char *ifname, struct ethtool_perm_addr e; guint8 _extra_data[NM_UTILS_HWADDR_LEN_MAX + 1]; } edata; + guint zeros[NM_UTILS_HWADDR_LEN_MAX] = { 0 }; if (!ifname) return FALSE; @@ -154,6 +155,12 @@ nmp_utils_ethtool_get_permanent_address (const char *ifname, return FALSE; g_assert (edata.e.size <= NM_UTILS_HWADDR_LEN_MAX); + + /* Some drivers might return a permanent address of all zeros. + * Reject that (rh#1264024) */ + if (memcmp (edata.e.data, zeros, edata.e.size) == 0) + return FALSE; + memcpy (buf, edata.e.data, edata.e.size); *length = edata.e.size; return TRUE;