diff options
| author | Michael Biebl <biebl@debian.org> | 2020-05-30 00:24:45 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2020-06-21 12:57:23 +0200 |
| commit | 58a8f6b71c1cbd20fc4b67386ab030252a8cf3b3 (patch) | |
| tree | 16e649a120dd8788f2be703732390567686133b9 /libnm-core/nm-utils.c | |
| parent | 7d3ff20eeaa6c7db2503a0289a210b06030b33c5 (diff) | |
| parent | 45e8e1149027529194982212c804c0468aa01d98 (diff) | |
Update upstream source from tag 'upstream/1.24.2'
Update to upstream version '1.24.2' with Debian dir ccbabe9f55adb82b9a243cc1783c175e85723f60
Diffstat (limited to 'libnm-core/nm-utils.c')
| -rw-r--r-- | libnm-core/nm-utils.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 7391b0f0..fed3f110 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -4269,7 +4269,8 @@ nm_utils_hwaddr_matches (gconstpointer hwaddr1, hwaddr1 = buf1; hwaddr1_len = l; } else { - g_return_val_if_fail ((hwaddr2_len == -1 && hwaddr2) || (hwaddr2_len > 0 && hwaddr2_len <= NM_UTILS_HWADDR_LEN_MAX), FALSE); + g_return_val_if_fail ( hwaddr2_len == -1 + || (hwaddr2_len > 0 && hwaddr2_len <= NM_UTILS_HWADDR_LEN_MAX), FALSE); return FALSE; } } else { @@ -4301,9 +4302,17 @@ nm_utils_hwaddr_matches (gconstpointer hwaddr1, } } + if (G_UNLIKELY ( hwaddr1_len <= 0 + || hwaddr1_len > NM_UTILS_HWADDR_LEN_MAX)) { + /* Only valid addresses can compare equal. In particular, + * addresses that are too long or of zero bytes, never + * compare equal. */ + return FALSE; + } + if (hwaddr1_len == INFINIBAND_ALEN) { - hwaddr1 = (guint8 *)hwaddr1 + INFINIBAND_ALEN - 8; - hwaddr2 = (guint8 *)hwaddr2 + INFINIBAND_ALEN - 8; + hwaddr1 = &((guint8 *) hwaddr1)[INFINIBAND_ALEN - 8]; + hwaddr2 = &((guint8 *) hwaddr2)[INFINIBAND_ALEN - 8]; hwaddr1_len = 8; } |