]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dhcp: fix assertion starting DHCP client without MAC address (#10054)
authorThomas Haller <thaller@redhat.com>
Tue, 11 Sep 2018 00:45:48 +0000 (02:45 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Sep 2018 00:45:47 +0000 (09:45 +0900)
An assertion in dhcp_network_bind_raw_socket() is triggered when
starting an sd_dhcp_client without setting a MAC address first.

  - sd_dhcp_client_start()
    - client_start()
      - client_start_delayed()
        - dhcp_network_bind_raw_socket()

In that case, the arp-type and MAC address is still unset. Note that
dhcp_network_bind_raw_socket() already checks for a valid arp-type
and MAC address below, so we should just gracefully return -EINVAL.

Maybe sd_dhcp_client_start() should fail earlier when starting without
MAC address. But the failure here will be correctly propagated and
the start aborted.

Fixes: 76253e73f9c9c24fec755e485516f3b55d0707b4
src/libsystemd-network/dhcp-network.c

index 77638338f25fec1277dcbbd21df6c05641825744..cf59f14958e17943a1475c60e8c489f9c893b21b 100644 (file)
@@ -126,8 +126,6 @@ int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link,
         const uint8_t *bcast_addr = NULL;
         uint8_t dhcp_hlen = 0;
 
-        assert_return(mac_addr_len > 0, -EINVAL);
-
         if (arp_type == ARPHRD_ETHER) {
                 assert_return(mac_addr_len == ETH_ALEN, -EINVAL);
                 memcpy(&eth_mac, mac_addr, ETH_ALEN);