diff options
author | Thomas Haller <thaller@redhat.com> | 2014-12-05 12:55:40 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-12-08 19:02:55 +0100 |
commit | 937a5639fccd8eb295e9bf2f11a5774cb1989195 (patch) | |
tree | 1bee2cf5cba7c92488972688c788c57eebbaeb17 | |
parent | 5bfb4c8c23e5b9d8020d6caff8c63830d2d8ec37 (diff) | |
download | NetworkManager-937a5639fccd8eb295e9bf2f11a5774cb1989195.tar.gz |
libnm: return 0 for empty address in hwaddr_binary_len()
Motivated by avoiding compiler warning with -O2 -Wstrict-overflow (gcc-4.8.3):
make[4]: Entering directory `./NetworkManager/libnm-core'
CC nm-utils.lo
../libnm-core/nm-utils.c: In function 'nm_utils_hwaddr_valid':
../libnm-core/nm-utils.c:2725:14: error: assuming signed overflow does not occur when simplifying conditional to constant [-Werror=strict-overflow]
if (length == 0 || length > NM_UTILS_HWADDR_LEN_MAX)
^
../libnm-core/nm-utils.c: In function 'nm_utils_hwaddr_canonical':
../libnm-core/nm-utils.c:2755:14: error: assuming signed overflow does not occur when simplifying conditional to constant [-Werror=strict-overflow]
if (length == 0 || length > NM_UTILS_HWADDR_LEN_MAX)
^
https://bugzilla.gnome.org/show_bug.cgi?id=741168
-rw-r--r-- | libnm-core/nm-utils.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index f104925c37..0f85e52a0e 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -2693,6 +2693,9 @@ hwaddr_binary_len (const char *asc) { int octets = 1; + if (!*asc) + return 0; + for (; *asc; asc++) { if (*asc == ':' || *asc == '-') octets++; @@ -2827,7 +2830,7 @@ nm_utils_hwaddr_matches (gconstpointer hwaddr1, g_return_val_if_fail (hwaddr1 != NULL, FALSE); hwaddr1_len = hwaddr_binary_len (hwaddr1); - if (hwaddr1_len > NM_UTILS_HWADDR_LEN_MAX) + if (hwaddr1_len == 0 || hwaddr1_len > NM_UTILS_HWADDR_LEN_MAX) return FALSE; if (!nm_utils_hwaddr_aton (hwaddr1, buf1, hwaddr1_len)) return FALSE; @@ -2880,7 +2883,7 @@ _nm_utils_hwaddr_to_dbus (const GValue *prop_value) if (str) { len = hwaddr_binary_len (str); - g_return_val_if_fail (len <= NM_UTILS_HWADDR_LEN_MAX, NULL); + g_return_val_if_fail (len > 0 && len <= NM_UTILS_HWADDR_LEN_MAX, NULL); if (!nm_utils_hwaddr_aton (str, buf, len)) len = 0; } else |