diff options
| author | Roy Marples <roy@marples.name> | 2016-11-17 12:26:30 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2016-11-17 12:26:30 +0000 |
| commit | 009fe41eb289d9f9e186d6ffd54a777e3bf1dc49 (patch) | |
| tree | ffeae7ac1b83027c4897081c0ba167e4ed6315c2 /if-bsd.c | |
| parent | ffa7d8fa0142e391a072c8f1d9dd8a8531eb41d9 (diff) | |
| download | dhcpcd-009fe41eb289d9f9e186d6ffd54a777e3bf1dc49.tar.xz | |
Don't assume we always have RTA_IFA.
Diffstat (limited to 'if-bsd.c')
| -rw-r--r-- | if-bsd.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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) |
