summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-09-17 19:53:56 +0200
committerThomas Haller <thaller@redhat.com>2015-09-18 13:29:34 +0200
commit2733aacd6495f2bdba81ddda617c9a506abd9e73 (patch)
tree5e13ad68f5f2ebd2a787b50b19941180aaf18bbd
parent2e66aea123fb6d504ab0e447d1b7bff0ba0a785b (diff)
downloadNetworkManager-2733aacd6495f2bdba81ddda617c9a506abd9e73.tar.gz
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
-rw-r--r--src/platform/nm-platform-utils.c7
1 files changed, 7 insertions, 0 deletions
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;