diff options
author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2011-12-17 11:06:22 +0000 |
---|---|---|
committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2011-12-17 11:06:22 +0000 |
commit | 1e629ba90fd563546f1c6db74b73f18266b32758 (patch) | |
tree | 2ecf830b8742ef91026649f45ae097bf2942e4f5 /contrib | |
parent | 5a8801b0eaf902bc7cd4480a5d0c1ddccca0541a (diff) | |
download | src-1e629ba90fd563546f1c6db74b73f18266b32758.tar.gz src-1e629ba90fd563546f1c6db74b73f18266b32758.zip |
Adter r228571 unbreak architectures with strict alignment rules
by copying rather than casting.
Notes
Notes:
svn path=/head/; revision=228623
Diffstat (limited to 'contrib')
-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 9258a5d40d0b..27ebeded6a1f 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; |