From: Roy Marples Date: Thu, 17 Nov 2016 12:26:30 +0000 (+0000) Subject: Don't assume we always have RTA_IFA. X-Git-Tag: v7.0.0-beta1~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37940841bd17e9ec7d7bd98478cdbdce7ec2aae5;p=thirdparty%2Fdhcpcd.git Don't assume we always have RTA_IFA. --- diff --git a/if-bsd.c b/if-bsd.c index 40df9a37..ea6f9170 100644 --- 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)