summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/sd-dhcp-server.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-01-28 02:25:37 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-02-01 11:56:22 +0900
commitbd1a3eb65b9e308028c18e1ed7ffde474a3b1244 (patch)
tree5a83ecb5b3b4cae6c0f2dbc45e8ab35237a1c888 /src/libsystemd-network/sd-dhcp-server.c
parent7e98fe05a0b9cdfdad326f34189cd37257d9d4e4 (diff)
downloadsystemd-bd1a3eb65b9e308028c18e1ed7ffde474a3b1244.tar.gz
sd-dhcp-server: do not assign address reserved for static leases to non-matching clients
This fix the root cause of the issue #22253.
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 2f429020bb..904298ebb0 100644
--- a/src/libsystemd-network/sd-dhcp-server.c
+++ b/src/libsystemd-network/sd-dhcp-server.c
@@ -801,6 +801,9 @@ static bool address_is_in_pool(sd_dhcp_server *server, be32_t address) {
be32toh(address) >= (be32toh(server->subnet) | (server->pool_offset + server->pool_size)))
return false;
+ if (hashmap_contains(server->static_leases_by_address, UINT32_TO_PTR(address)))
+ return false;
+
return true;
}