From 7c591a961c23ff363149bc4a5bcd0ae212c849d3 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 24 May 2022 17:26:29 +0200 Subject: [PATCH] dnsdist: Accept large buffers in getMACAddress() --- pdns/misc.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pdns/misc.cc b/pdns/misc.cc index 4b682489a7..ebcd717447 100644 --- a/pdns/misc.cc +++ b/pdns/misc.cc @@ -1232,10 +1232,11 @@ int getMACAddress(const ComboAddress& ca, char* dest, size_t destLen) } else if (rtatp->rta_type == NDA_LLADDR) { if (foundIP) { - if ((rtatp->rta_len - sizeof(struct rtattr)) != destLen) { - return EINVAL; + size_t addrLen = rtatp->rta_len - sizeof(struct rtattr); + if (addrLen > destLen) { + return ENOBUFS; } - memcpy(dest, reinterpret_cast(rtatp) + sizeof(struct rtattr), destLen); + memcpy(dest, reinterpret_cast(rtatp) + sizeof(struct rtattr), addrLen); foundMAC = true; done = true; break; -- 2.47.2