diff options
Diffstat (limited to 'src/dhcp-manager')
| -rw-r--r-- | src/dhcp-manager/nm-dhcp-systemd.c | 3 | ||||
| -rw-r--r-- | src/dhcp-manager/nm-dhcp-utils.c | 5 | ||||
| -rw-r--r-- | src/dhcp-manager/tests/test-dhcp-utils.c | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/dhcp-manager/nm-dhcp-systemd.c b/src/dhcp-manager/nm-dhcp-systemd.c index 91fa8803..5d49c27e 100644 --- a/src/dhcp-manager/nm-dhcp-systemd.c +++ b/src/dhcp-manager/nm-dhcp-systemd.c @@ -312,7 +312,8 @@ lease_to_ip4_config (const char *iface, continue; route.network = a.s_addr; - if (sd_dhcp_route_get_destination_prefix_length (routes[i], &plen) < 0) + if ( sd_dhcp_route_get_destination_prefix_length (routes[i], &plen) < 0 + || plen > 32) continue; route.plen = plen; diff --git a/src/dhcp-manager/nm-dhcp-utils.c b/src/dhcp-manager/nm-dhcp-utils.c index be563a69..a88a7e6d 100644 --- a/src/dhcp-manager/nm-dhcp-utils.c +++ b/src/dhcp-manager/nm-dhcp-utils.c @@ -60,7 +60,7 @@ ip4_process_dhcpcd_rfc3442_routes (const char *str, *slash = '\0'; errno = 0; rt_cidr = strtol (slash + 1, NULL, 10); - if ((errno == EINVAL) || (errno == ERANGE)) { + if (errno || rt_cidr > 32) { nm_log_warn (LOGD_DHCP4, "DHCP provided invalid classless static route cidr: '%s'", slash + 1); continue; } @@ -382,7 +382,8 @@ nm_dhcp_utils_ip4_config_from_options (int ifindex, in_addr_t addr; NMPlatformIP4Address address; char *str = NULL; - guint32 gwaddr = 0, plen = 0; + guint32 gwaddr = 0; + guint8 plen = 0; g_return_val_if_fail (options != NULL, NULL); diff --git a/src/dhcp-manager/tests/test-dhcp-utils.c b/src/dhcp-manager/tests/test-dhcp-utils.c index 162f2dd4..f477c061 100644 --- a/src/dhcp-manager/tests/test-dhcp-utils.c +++ b/src/dhcp-manager/tests/test-dhcp-utils.c @@ -208,6 +208,8 @@ ip4_test_route (NMIP4Config *ip4_config, const NMPlatformIP4Route *route; guint32 tmp; + g_assert (expected_prefix <= 32); + route = nm_ip4_config_get_route (ip4_config, route_num); g_assert (inet_pton (AF_INET, expected_dest, &tmp) > 0); g_assert (route->network == tmp); |