]> granicus.if.org Git - pdns/commitdiff
v6 works now
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 25 Jul 2017 12:17:23 +0000 (14:17 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 22 Jan 2018 21:57:35 +0000 (22:57 +0100)
pdns/iputils.hh

index 9fb7fa3466407334a085d7b36cc74a81b18346ed..de0cedf897bf9aa3ec64a5c98fbfe2309073cb8d 100644 (file)
@@ -315,11 +315,19 @@ inline ComboAddress makeComboAddressFromRaw(uint8_t version, const string &str)
   ComboAddress address;
   size_t len;
 
-  if (version == 4) { len = 4; address.sin4.sin_family=AF_INET; }
-  else if (version == 6) { len = 16; address.sin4.sin_family=AF_INET6; }
+  if (version == 4) {
+    len = 4;
+    address.sin4.sin_family=AF_INET;
+    if(str.size() != len) throw NetmaskException("invalid raw address length");
+    memcpy(&address.sin4.sin_addr, str.c_str(), len);
+  }
+  else if (version == 6) {
+    len = 16;
+    address.sin4.sin_family=AF_INET6;
+    if(str.size() != len) throw NetmaskException("invalid raw address length");
+    memcpy(&address.sin6.sin6_addr, str.c_str(), len);
+  }
   else throw NetmaskException("invalid address family");
-  if(str.size() != len) throw NetmaskException("invalid raw address length");
-  memcpy(&address.sin4.sin_addr, str.c_str(), len);
 
   return address;
 }