Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jan 2017 20:29:58 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r311936 - stable/11/sbin/ping
Message-ID:  <201701112029.v0BKTwCb056055@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Wed Jan 11 20:29:58 2017
New Revision: 311936
URL: https://svnweb.freebsd.org/changeset/base/311936

Log:
  MFC r311530:
  
  Fix clang 4.0.0 warnings about taking the address of a packed member of
  struct ip in ping(8):
  
  sbin/ping/ping.c:1684:53: error: taking address of packed member
  'ip_src' of class or structure 'ip' may result in an unaligned pointer
  value [-Werror,-Waddress-of-packed-member]
          (void)printf(" %s ", inet_ntoa(*(struct in_addr *)&ip->ip_src.s_addr));
                                                             ^~~~~~~~~~~~~~~~~
  sbin/ping/ping.c:1685:53: error: taking address of packed member
  'ip_dst' of class or structure 'ip' may result in an unaligned pointer
  value [-Werror,-Waddress-of-packed-member]
          (void)printf(" %s ", inet_ntoa(*(struct in_addr *)&ip->ip_dst.s_addr));
                                                             ^~~~~~~~~~~~~~~~~

Modified:
  stable/11/sbin/ping/ping.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sbin/ping/ping.c
==============================================================================
--- stable/11/sbin/ping/ping.c	Wed Jan 11 20:23:45 2017	(r311935)
+++ stable/11/sbin/ping/ping.c	Wed Jan 11 20:29:58 2017	(r311936)
@@ -1666,6 +1666,7 @@ pr_icmph(struct icmp *icp)
 static void
 pr_iph(struct ip *ip)
 {
+	struct in_addr ina;
 	u_char *cp;
 	int hlen;
 
@@ -1681,8 +1682,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++);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701112029.v0BKTwCb056055>