From: Yu Watanabe Date: Tue, 8 Aug 2023 19:58:04 +0000 (+0900) Subject: sd-dhcp-server: propagate error on parsing DHCP packet X-Git-Tag: v255-rc1~786^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=809da721f0167f88234e55a342e82023019e2341;p=thirdparty%2Fsystemd.git sd-dhcp-server: propagate error on parsing DHCP packet Otherwise, we silently ignore the received packet and that makes hard to debug issue. --- diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 717dc195c56..0aa500d7d23 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -1121,7 +1121,7 @@ int dhcp_server_handle_message(sd_dhcp_server *server, DHCPMessage *message, siz type = dhcp_option_parse(message, length, parse_request, req, &error_message); if (type < 0) - return 0; + return type; r = ensure_sane_request(server, req, message); if (r < 0) diff --git a/src/libsystemd-network/test-dhcp-server.c b/src/libsystemd-network/test-dhcp-server.c index c31a44e3770..a2b46b99627 100644 --- a/src/libsystemd-network/test-dhcp-server.c +++ b/src/libsystemd-network/test-dhcp-server.c @@ -146,7 +146,7 @@ static void test_message_handler(void) { test.option_type.code = 0; test.option_type.length = 0; test.option_type.type = 0; - assert_se(dhcp_server_handle_message(server, (DHCPMessage*)&test, sizeof(test)) == 0); + assert_se(dhcp_server_handle_message(server, (DHCPMessage*)&test, sizeof(test)) == -ENOMSG); test.option_type.code = SD_DHCP_OPTION_MESSAGE_TYPE; test.option_type.length = 1; test.option_type.type = DHCP_DISCOVER;