From 830849211d866fcafef555269b1376f15802cc68 Mon Sep 17 00:00:00 2001 From: Jannis Achstetter Date: Sat, 4 Feb 2023 22:37:39 +0100 Subject: [PATCH] dhserver: Fix a potential DoS vulnerability accidentially introduced by #1712 --- lib/networking/dhserver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/networking/dhserver.c b/lib/networking/dhserver.c index def431f75f..8cd22ddb9c 100644 --- a/lib/networking/dhserver.c +++ b/lib/networking/dhserver.c @@ -86,7 +86,7 @@ typedef struct uint8_t dp_giaddr[4]; /* gateway IP address */ uint8_t dp_chaddr[16]; /* client hardware address */ uint8_t dp_legacy[192]; - uint8_t dp_magic[4]; + uint8_t dp_magic[4]; uint8_t dp_options[275]; /* options area */ } DHCP_TYPE; @@ -242,7 +242,11 @@ static void udp_recv_proc(void *arg, struct udp_pcb *upcb, struct pbuf *p, const memcpy(&dhcp_data, p->payload, n); ptr = find_dhcp_option(dhcp_data.dp_options, sizeof(dhcp_data.dp_options), DHCP_MESSAGETYPE); - if (ptr == NULL) return; + if (ptr == NULL) + { + pbuf_free(p); + return; + } switch (ptr[2]) {