DHCP: Fail link_dhcp_set_routes promotely if no address is assigned from lease (#6009)
Currently the local variable `address` is unintialized if the DHCP lease doesn't provide a router address (when r == -ENODATA). Thus the subsequent call to route_scope_from_address will result in accessing an unintialized variable. As a matter of fact, sd-dhcp-client ignores DHCP leases without an address so link_dhcp_set_routes probably will never be called without a valid address.
This commit is contained in:
parent
a083537e5d
commit
b23aec0d6b
|
@ -77,6 +77,10 @@ static int link_set_dhcp_routes(Link *link) {
|
|||
if (!link->network->dhcp_use_routes)
|
||||
return 0;
|
||||
|
||||
r = sd_dhcp_lease_get_address(link->dhcp_lease, &address);
|
||||
if (r < 0)
|
||||
return log_link_warning_errno(link, r, "DHCP error: could not get address: %m");
|
||||
|
||||
r = sd_dhcp_lease_get_router(link->dhcp_lease, &gateway);
|
||||
if (r < 0 && r != -ENODATA)
|
||||
return log_link_warning_errno(link, r, "DHCP error: could not get gateway: %m");
|
||||
|
@ -85,10 +89,6 @@ static int link_set_dhcp_routes(Link *link) {
|
|||
_cleanup_route_free_ Route *route = NULL;
|
||||
_cleanup_route_free_ Route *route_gw = NULL;
|
||||
|
||||
r = sd_dhcp_lease_get_address(link->dhcp_lease, &address);
|
||||
if (r < 0)
|
||||
return log_link_warning_errno(link, r, "DHCP error: could not get address: %m");
|
||||
|
||||
r = route_new(&route);
|
||||
if (r < 0)
|
||||
return log_link_error_errno(link, r, "Could not allocate route: %m");
|
||||
|
|
Loading…
Reference in a new issue