]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Don't assume we always have RTA_IFA.
authorRoy Marples <roy@marples.name>
Thu, 17 Nov 2016 12:26:30 +0000 (12:26 +0000)
committerRoy Marples <roy@marples.name>
Thu, 17 Nov 2016 12:26:30 +0000 (12:26 +0000)
if-bsd.c

index 40df9a37217cf5f3925bf660201efe17f8e30be6..ea6f9170962898325970f5e014c6fc04f82878bc 100644 (file)
--- a/if-bsd.c
+++ b/if-bsd.c
@@ -355,6 +355,9 @@ static void
 if_copysa(struct sockaddr *dst, const struct sockaddr *src)
 {
 
+       assert(dst != NULL);
+       assert(src != NULL);
+
        memcpy(dst, src, src->sa_len);
 #ifdef __KAME__
        if (dst->sa_family == AF_INET6) {
@@ -543,7 +546,8 @@ if_copyrt(struct dhcpcd_ctx *ctx, struct rt *rt, const struct rt_msghdr *rtm)
        if (rt->rt_flags & RTF_GATEWAY &&
            rti_info[RTAX_GATEWAY]->sa_family != AF_LINK)
                if_copysa(&rt->rt_gateway, rti_info[RTAX_GATEWAY]);
-       if_copysa(&rt->rt_ifa, rti_info[RTAX_IFA]);
+       if (rtm->rtm_addrs & RTA_IFA)
+               if_copysa(&rt->rt_ifa, rti_info[RTAX_IFA]);
        rt->rt_mtu = (unsigned int)rtm->rtm_rmx.rmx_mtu;
 
        if (rtm->rtm_index)