From: Roy Marples Date: Sun, 9 Oct 2016 08:16:42 +0000 (+0000) Subject: Copy pdp.prefix as it's not aligned. X-Git-Tag: v7.0.0-beta1~137 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6347b2ea3e8f764a3090ac65bdf058ca316df260;p=thirdparty%2Fdhcpcd.git Copy pdp.prefix as it's not aligned. --- diff --git a/dhcp6.c b/dhcp6.c index 60fdbaf3..389263cd 100644 --- a/dhcp6.c +++ b/dhcp6.c @@ -829,7 +829,8 @@ dhcp6_makemessage(struct interface *ifp) pdp.pltime = htonl(ap->prefix_pltime); pdp.vltime = htonl(ap->prefix_vltime); pdp.prefix_len = ap->prefix_len; - pdp.prefix = ap->prefix; + /* pdp.prefix is not aligned, so copy it in. */ + memcpy(&pdp.prefix, &ap->prefix, sizeof(pdp.prefix)); COPYIN(D6_OPTION_IAPREFIX, &pdp, sizeof(pdp)); ia_na_len = (uint16_t) (ia_na_len + sizeof(o) + sizeof(pdp)); @@ -1959,7 +1960,8 @@ dhcp6_findpd(struct interface *ifp, const uint8_t *iaid, a->dadcallback = dhcp6_dadcallback; a->ia_type = D6_OPTION_IA_PD; memcpy(a->iaid, iaid, sizeof(a->iaid)); - a->prefix = pdp.prefix; + /* pdp.prefix is not aligned so copy it in. */ + memcpy(&a->prefix, &pdp.prefix, sizeof(a->prefix)); a->prefix_len = pdp.prefix_len; ia = inet_ntop(AF_INET6, &a->prefix, iabuf, sizeof(iabuf));