summaryrefslogtreecommitdiffstats
path: root/freebsd/sbin/ping/ping.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sbin/ping/ping.c')
-rw-r--r--freebsd/sbin/ping/ping.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/freebsd/sbin/ping/ping.c b/freebsd/sbin/ping/ping.c
index f0d1f7ce..e8d962f3 100644
--- a/freebsd/sbin/ping/ping.c
+++ b/freebsd/sbin/ping/ping.c
@@ -1743,6 +1743,7 @@ pr_icmph(struct icmp *icp)
static void
pr_iph(struct ip *ip)
{
+ struct in_addr ina;
u_char *cp;
int hlen;
@@ -1758,8 +1759,10 @@ pr_iph(struct ip *ip)
(u_long) ntohl(ip->ip_off) & 0x1fff);
(void)printf(" %02x %02x %04x", ip->ip_ttl, ip->ip_p,
ntohs(ip->ip_sum));
- (void)printf(" %s ", inet_ntoa(*(struct in_addr *)&ip->ip_src.s_addr));
- (void)printf(" %s ", inet_ntoa(*(struct in_addr *)&ip->ip_dst.s_addr));
+ memcpy(&ina, &ip->ip_src.s_addr, sizeof ina);
+ (void)printf(" %s ", inet_ntoa(ina));
+ memcpy(&ina, &ip->ip_dst.s_addr, sizeof ina);
+ (void)printf(" %s ", inet_ntoa(ina));
/* dump any option bytes */
while (hlen-- > 20) {
(void)printf("%02x", *cp++);