]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Accept large buffers in getMACAddress() 11643/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 24 May 2022 15:26:29 +0000 (17:26 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 24 May 2022 15:27:34 +0000 (17:27 +0200)
pdns/misc.cc

index 4b682489a7738a3440e653bb63314b78e4f67bef..ebcd717447ad3350f0e1b17cba9d50cfcaf56a34 100644 (file)
@@ -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<const char*>(rtatp) + sizeof(struct rtattr), destLen);
+            memcpy(dest, reinterpret_cast<const char*>(rtatp) + sizeof(struct rtattr), addrLen);
             foundMAC = true;
             done = true;
             break;