summaryrefslogtreecommitdiffstats
path: root/if-bsd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-11-17 12:26:30 +0000
committerRoy Marples <roy@marples.name>2016-11-17 12:26:30 +0000
commit009fe41eb289d9f9e186d6ffd54a777e3bf1dc49 (patch)
treeffeae7ac1b83027c4897081c0ba167e4ed6315c2 /if-bsd.c
parentffa7d8fa0142e391a072c8f1d9dd8a8531eb41d9 (diff)
downloaddhcpcd-009fe41eb289d9f9e186d6ffd54a777e3bf1dc49.tar.xz
Don't assume we always have RTA_IFA.
Diffstat (limited to 'if-bsd.c')
-rw-r--r--if-bsd.c6
1 files changed, 5 insertions, 1 deletions
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)