Bug 1229726 - fix the data copy from sockaddr to NetAddr on OSX/FreeBSD. r=mcmanus. draft
authorShih-Chiang Chien <schien@mozilla.com>
Wed, 23 Dec 2015 14:13:58 +0800
changeset 317186 e284a3ef5a92eab2ef2c82fa17ba49b9d9d0c354
parent 316994 ad16863d1d45bd3fd7906c76fa1ac1e12d24a133
child 512271 497738012b0e8ee02faa8bfe175758ef4774adbe
push id8669
push userschien@mozilla.com
push dateWed, 23 Dec 2015 06:14:41 +0000
reviewersmcmanus
bugs1229726
milestone46.0a1
Bug 1229726 - fix the data copy from sockaddr to NetAddr on OSX/FreeBSD. r=mcmanus.
netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp
--- a/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp
+++ b/netwerk/dns/mdns/libmdns/MDNSResponderReply.cpp
@@ -276,17 +276,21 @@ GetAddrInfoReplyRunnable::Reply(DNSServi
   }
 
   nsCOMPtr<nsIThread> thread(obj->GetThread());
   if (!thread) {
     return;
   }
 
   NetAddr address;
-  memcpy(&address, aAddress, sizeof(*aAddress));
+  address.raw.family = aAddress->sa_family;
+
+  static_assert(sizeof(address.raw.data) >= sizeof(aAddress->sa_data),
+                "size of sockaddr.sa_data is too big");
+  memcpy(&address.raw.data, aAddress->sa_data, sizeof(aAddress->sa_data));
 
   thread->Dispatch(new GetAddrInfoReplyRunnable(aSdRef,
                                                 aFlags,
                                                 aInterfaceIndex,
                                                 aErrorCode,
                                                 nsCString(aHostName),
                                                 address,
                                                 aTTL,