diff options
author | Thomas Haller <thaller@redhat.com> | 2021-01-08 13:10:12 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-01-08 13:10:14 +0100 |
commit | fc6475bbf7b17f0c9ac9b44f9acfbb9cbd62c9bd (patch) | |
tree | 2dafca709611cfcecaa70b33aed309d7d02420be | |
parent | 89f808efcb76621f5bf8696fa823bf5955612a64 (diff) | |
download | NetworkManager-fc6475bbf7b17f0c9ac9b44f9acfbb9cbd62c9bd.tar.gz |
platform: avoid "-Wmaybe-uninitialized" warning in ip_route_add()
When building without "more-asserts" and LTO enabled, we can get
a warning about uninitalized "obj" variable:
src/platform/nm-linux-platform.c: In function 'ip_route_add':
src/platform/nm-platform.c:4761:24: warning: 'MEM[(struct NMPlatformIPRoute *)&obj + 24B].rt_source' may be used uninitialized in this function [-Wmaybe-uninitialized]
4761 | route->rt_source = nmp_utils_ip_config_source_round_trip_rtprot(route->rt_source);
| ^
src/platform/nm-platform.h:2139:25: warning: 'BIT_FIELD_REF <MEM[(const struct NMPlatformIPRoute *)&obj + 24B], 8, 72>' may be used uninitialized in this function [-Wmaybe-uninitialized]
2139 | return r->table_any ? 254u /* RT_TABLE_MAIN */
|
That is due to the "default" switch case which was unhandled
when building without more-asserts". Avoid that by reworking the
code.
-rw-r--r-- | src/platform/nm-linux-platform.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index f182dc637d..74b2d5a962 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -8634,16 +8634,9 @@ ip_route_add(NMPlatform * platform, nm_auto_nlmsg struct nl_msg *nlmsg = NULL; NMPObject obj; - switch (addr_family) { - case AF_INET: - nmp_object_stackinit(&obj, NMP_OBJECT_TYPE_IP4_ROUTE, (const NMPlatformObject *) route); - break; - case AF_INET6: - nmp_object_stackinit(&obj, NMP_OBJECT_TYPE_IP6_ROUTE, (const NMPlatformObject *) route); - break; - default: - nm_assert_not_reached(); - } + nmp_object_stackinit(&obj, + NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)), + (const NMPlatformObject *) route); nm_platform_ip_route_normalize(addr_family, NMP_OBJECT_CAST_IP_ROUTE(&obj)); |