From: Remi Gacogne Date: Tue, 24 May 2022 15:26:29 +0000 (+0200) Subject: dnsdist: Accept large buffers in getMACAddress() X-Git-Tag: auth-4.8.0-alpha0~92^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F11643%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Accept large buffers in getMACAddress() --- 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;