summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-12-05 12:55:40 +0100
committerThomas Haller <thaller@redhat.com>2014-12-08 19:02:55 +0100
commit937a5639fccd8eb295e9bf2f11a5774cb1989195 (patch)
tree1bee2cf5cba7c92488972688c788c57eebbaeb17
parent5bfb4c8c23e5b9d8020d6caff8c63830d2d8ec37 (diff)
downloadNetworkManager-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.c7
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