sd-dhcp-server: fix heap buffer overflow

This checks client hardware length earlier.
This commit is contained in:
Yu Watanabe
2022-01-24 04:49:33 +09:00
parent b87209f933
commit ab4f9eeb7b
+3 -3
View File
@@ -724,6 +724,9 @@ static int ensure_sane_request(sd_dhcp_server *server, DHCPRequest *req, DHCPMes
req->message = message;
if (message->hlen > sizeof(message->chaddr))
return -EBADMSG;
/* set client id based on MAC address if client did not send an explicit one */
if (!req->client_id.data) {
uint8_t *data;
@@ -742,9 +745,6 @@ static int ensure_sane_request(sd_dhcp_server *server, DHCPRequest *req, DHCPMes
req->client_id.data = data;
}
if (message->hlen > sizeof(message->chaddr))
return -EBADMSG;
if (message->hlen == 0 || memeqzero(message->chaddr, message->hlen)) {
/* See RFC2131 section 4.1.1.
* hlen and chaddr may not be set for non-ethernet interface.