]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Fix creation of normal IPv6 link-local addresses overflowing the
authorRoy Marples <roy@marples.name>
Wed, 18 Mar 2015 12:07:02 +0000 (12:07 +0000)
committerRoy Marples <roy@marples.name>
Wed, 18 Mar 2015 12:07:02 +0000 (12:07 +0000)
address and fooling dhcpcd into thinking it's not tentative when added.

ipv6.c

diff --git a/ipv6.c b/ipv6.c
index 54053cf484fcfee966f1b4f532c6a9fc2e6cde2f..2187c4612c7c3a6064f83b489bde5bc684b0598e 100644 (file)
--- a/ipv6.c
+++ b/ipv6.c
@@ -1149,7 +1149,7 @@ nextslaacprivate:
                }
                ap->dadcounter = dadcounter;
        } else {
-               memcpy(ap->addr.s6_addr, ap->prefix.s6_addr, ap->prefix_len);
+               memcpy(ap->addr.s6_addr, ap->prefix.s6_addr, 8);
                switch (ifp->family) {
                case ARPHRD_ETHER:
                        if (ifp->hwlen == 6) {
@@ -1163,6 +1163,11 @@ nextslaacprivate:
                                ap->addr.s6_addr[15] = ifp->hwaddr[5];
                        } else if (ifp->hwlen == 8)
                                memcpy(&ap->addr.s6_addr[8], ifp->hwaddr, 8);
+                       else {
+                               free(ap);
+                               errno = ENOTSUP;
+                               return -1;
+                       }
                        break;
                }