diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-02-17 00:49:21 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-02-17 16:45:10 +0900 |
commit | 9e0cb8b61f46a2164290a2380db89e45876b370c (patch) | |
tree | 77f95257286d0245eb7f9c5d84a2e31f60888f6d /src/libsystemd-network/sd-dhcp-server.c | |
parent | 30778ead7ae2188eb6fdaca702c3ef32a4a19d02 (diff) | |
download | systemd-9e0cb8b61f46a2164290a2380db89e45876b370c.tar.gz |
sd-dhcp-server: do not offer server address
The server address may be in the pool.
Diffstat (limited to 'src/libsystemd-network/sd-dhcp-server.c')
-rw-r--r-- | src/libsystemd-network/sd-dhcp-server.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 8063899232..81dc4ff950 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -797,6 +797,9 @@ static bool address_is_in_pool(sd_dhcp_server *server, be32_t address) { if (server->pool_size == 0) return false; + if (address == server->address) + return false; + if (be32toh(address) < (be32toh(server->subnet) | server->pool_offset) || be32toh(address) >= (be32toh(server->subnet) | (server->pool_offset + server->pool_size))) return false; |