summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/sd-dhcp-server.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-02-17 00:49:21 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-02-17 16:45:10 +0900
commit9e0cb8b61f46a2164290a2380db89e45876b370c (patch)
tree77f95257286d0245eb7f9c5d84a2e31f60888f6d /src/libsystemd-network/sd-dhcp-server.c
parent30778ead7ae2188eb6fdaca702c3ef32a4a19d02 (diff)
downloadsystemd-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.c3
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;