diff options
author | Thomas Haller <thaller@redhat.com> | 2019-02-08 13:07:56 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-02-09 07:14:32 +0100 |
commit | 668dc1cd02682bd36d465f788e817783da9e6734 (patch) | |
tree | 260dce9b07b20c764595d04bf826b83c2414ded7 | |
parent | 167142c38e3e6cbfa33d656ad1eb18f2ff066895 (diff) | |
download | NetworkManager-668dc1cd02682bd36d465f788e817783da9e6734.tar.gz |
core: use NM_CMP_*() macro in route_compare()th/missing-braces-warning
nm_ip_route_get_prefix() and plen are guint type, hence the following
is not correct:
plen = nm_ip_route_get_prefix (route1);
r = plen - nm_ip_route_get_prefix (route2);
if (r)
return r > 0 ? 1 : -1;
Use the macro, it gets subtle cases like this right.
Fixes: b32bb36c61c102e73d73cbc78c5fa412af706e0b
-rw-r--r-- | src/NetworkManagerUtils.c | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index ed5de3eb6d..0fac5eff25 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -377,41 +377,36 @@ check_ip6_method (NMConnection *orig, static int route_compare (NMIPRoute *route1, NMIPRoute *route2, gint64 default_metric) { - gint64 r, metric1, metric2; - int family; - guint plen; NMIPAddr a1; NMIPAddr a2; + guint64 m1; + guint64 m2; + int family; + guint plen; family = nm_ip_route_get_family (route1); - r = family - nm_ip_route_get_family (route2); - if (r) - return r > 0 ? 1 : -1; + NM_CMP_DIRECT (family, nm_ip_route_get_family (route2)); - plen = nm_ip_route_get_prefix (route1); - r = plen - nm_ip_route_get_prefix (route2); - if (r) - return r > 0 ? 1 : -1; + nm_assert_addr_family (family); - metric1 = nm_ip_route_get_metric (route1) == -1 ? default_metric : nm_ip_route_get_metric (route1); - metric2 = nm_ip_route_get_metric (route2) == -1 ? default_metric : nm_ip_route_get_metric (route2); + plen = nm_ip_route_get_prefix (route1); + NM_CMP_DIRECT (plen, nm_ip_route_get_prefix (route2)); - r = metric1 - metric2; - if (r) - return r > 0 ? 1 : -1; + m1 = nm_ip_route_get_metric (route1); + m2 = nm_ip_route_get_metric (route2); + NM_CMP_DIRECT (m1 == -1 ? default_metric : m1, + m2 == -1 ? default_metric : m2); - r = g_strcmp0 (nm_ip_route_get_next_hop (route1), nm_ip_route_get_next_hop (route2)); - if (r) - return r; + NM_CMP_DIRECT_STRCMP0 (nm_ip_route_get_next_hop (route1), + nm_ip_route_get_next_hop (route2)); - /* NMIPRoute validates family and dest. inet_pton() is not expected to fail. */ - inet_pton (family, nm_ip_route_get_dest (route1), &a1); - inet_pton (family, nm_ip_route_get_dest (route2), &a2); + if (!inet_pton (family, nm_ip_route_get_dest (route1), &a1)) + nm_assert_not_reached (); + if (!inet_pton (family, nm_ip_route_get_dest (route2), &a2)) + nm_assert_not_reached (); nm_utils_ipx_address_clear_host_address (family, &a1, &a1, plen); nm_utils_ipx_address_clear_host_address (family, &a2, &a2, plen); - r = memcmp (&a1, &a2, nm_utils_addr_family_to_size (family)); - if (r) - return r; + NM_CMP_DIRECT_MEMCMP (&a1, &a2, nm_utils_addr_family_to_size (family)); return 0; } |