dhcp-serve-request: move message size check to dhcp_server_handle_message()

This commit is contained in:
Yu Watanabe
2026-05-22 04:30:34 +09:00
parent 45a3a3b92c
commit 27d99475b6
2 changed files with 3 additions and 6 deletions
+3 -3
View File
@@ -414,6 +414,9 @@ int dhcp_server_handle_message(sd_dhcp_server *server, DHCPMessage *message, siz
assert(server);
assert(message);
if (length < sizeof(DHCPMessage))
return 0;
if (message->op != BOOTREQUEST)
return 0;
@@ -480,9 +483,6 @@ static int server_receive_message(sd_event_source *s, int fd, uint32_t revents,
return 0;
}
if ((size_t) len < sizeof(DHCPMessage))
return 0;
/* TODO: figure out if this can be done as a filter on the socket, like for IPv6 */
struct in_pktinfo *info = CMSG_FIND_DATA(&msg, IPPROTO_IP, IP_PKTINFO, struct in_pktinfo);
if (info && info->ipi_ifindex != server->ifindex)
@@ -63,9 +63,6 @@ static int add_static_lease(sd_dhcp_server *server, uint8_t i) {
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
struct in_addr address = { .s_addr = htobe32(UINT32_C(10) << 24 | UINT32_C(1))};
if (size < sizeof(DHCPMessage))
return 0;
fuzz_setup_logging();
_cleanup_(rm_rf_physical_and_freep) char *tmpdir = NULL;