diff options
author | bz <bz@FreeBSD.org> | 2011-12-17 11:06:22 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2011-12-17 11:06:22 +0000 |
commit | d13adceee23cf3f4cf222351dcf248d4d429471b (patch) | |
tree | 2ecf830b8742ef91026649f45ae097bf2942e4f5 /contrib/bsnmp/snmp_mibII/mibII.c | |
parent | d812d4dc6a926ad93b9c51ee84d7fa2430670d3a (diff) | |
download | FreeBSD-src-d13adceee23cf3f4cf222351dcf248d4d429471b.zip FreeBSD-src-d13adceee23cf3f4cf222351dcf248d4d429471b.tar.gz |
Adter r228571 unbreak architectures with strict alignment rules
by copying rather than casting.
Diffstat (limited to 'contrib/bsnmp/snmp_mibII/mibII.c')
-rw-r--r-- | contrib/bsnmp/snmp_mibII/mibII.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/contrib/bsnmp/snmp_mibII/mibII.c b/contrib/bsnmp/snmp_mibII/mibII.c index 9258a5d..27ebede 100644 --- a/contrib/bsnmp/snmp_mibII/mibII.c +++ b/contrib/bsnmp/snmp_mibII/mibII.c @@ -941,7 +941,7 @@ handle_rtmsg(struct rt_msghdr *rtm) { struct sockaddr *addrs[RTAX_MAX]; struct if_msghdr *ifm; - struct ifa_msghdr *ifam; + struct ifa_msghdr ifam; struct ifma_msghdr *ifmam; #ifdef RTM_IFANNOUNCE struct if_announcemsghdr *ifan; @@ -961,17 +961,17 @@ handle_rtmsg(struct rt_msghdr *rtm) switch (rtm->rtm_type) { case RTM_NEWADDR: - ifam = (struct ifa_msghdr *)rtm; - mib_extract_addrs(ifam->ifam_addrs, (u_char *)(ifam + 1), addrs); + memcpy(&ifam, rtm, sizeof(ifam)); + mib_extract_addrs(ifam.ifam_addrs, (u_char *)(&ifam + 1), addrs); if (addrs[RTAX_IFA] == NULL || addrs[RTAX_NETMASK] == NULL) break; sa = (struct sockaddr_in *)(void *)addrs[RTAX_IFA]; if ((ifa = mib_find_ifa(sa->sin_addr)) == NULL) { /* unknown address */ - if ((ifp = mib_find_if_sys(ifam->ifam_index)) == NULL) { + if ((ifp = mib_find_if_sys(ifam.ifam_index)) == NULL) { syslog(LOG_WARNING, "RTM_NEWADDR for unknown " - "interface %u", ifam->ifam_index); + "interface %u", ifam.ifam_index); break; } if ((ifa = alloc_ifa(ifp->index, sa->sin_addr)) == NULL) @@ -988,8 +988,8 @@ handle_rtmsg(struct rt_msghdr *rtm) break; case RTM_DELADDR: - ifam = (struct ifa_msghdr *)rtm; - mib_extract_addrs(ifam->ifam_addrs, (u_char *)(ifam + 1), addrs); + memcpy(&ifam, rtm, sizeof(ifam)); + mib_extract_addrs(ifam.ifam_addrs, (u_char *)(&ifam + 1), addrs); if (addrs[RTAX_IFA] == NULL) break; |