Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Jul 2016 07:01:42 +0000 (UTC)
From:      Marcelo Araujo <araujo@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r302342 - head/sbin/ping6
Message-ID:  <201607050701.u6571gqU019921@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: araujo
Date: Tue Jul  5 07:01:42 2016
New Revision: 302342
URL: https://svnweb.freebsd.org/changeset/base/302342

Log:
  Fix a regression introduced on revision r271909, when using argument -g
  or several hops we have segmentation fault because we overwrite the same
  structure to store information for host and gateway.
  
  Submitted by:	Maryse Levavasseur <maryse.levavasseur@stormshield.eu>
  Reworked by:	hrs
  Approved by:	re (hrs)
  Differential Revision:	https://reviews.freebsd.org/D6980

Modified:
  head/sbin/ping6/ping6.c

Modified: head/sbin/ping6/ping6.c
==============================================================================
--- head/sbin/ping6/ping6.c	Tue Jul  5 06:16:42 2016	(r302341)
+++ head/sbin/ping6/ping6.c	Tue Jul  5 07:01:42 2016	(r302342)
@@ -515,7 +515,6 @@ main(int argc, char *argv[])
 			memcpy(&src, res->ai_addr, res->ai_addrlen);
 			srclen = res->ai_addrlen;
 			freeaddrinfo(res);
-			res = NULL;
 			options |= F_SRCADDR;
 			break;
 		case 's':		/* size of packet to send */
@@ -631,7 +630,7 @@ main(int argc, char *argv[])
 	if (error)
 		errx(1, "%s", gai_strerror(error));
 	if (res->ai_canonname)
-		hostname = res->ai_canonname;
+		hostname = strdup(res->ai_canonname);
 	else
 		hostname = target;
 
@@ -643,6 +642,7 @@ main(int argc, char *argv[])
 	if ((s = socket(res->ai_family, res->ai_socktype,
 	    res->ai_protocol)) < 0)
 		err(1, "socket");
+	freeaddrinfo(res);
 
 	/* set the source address if specified. */
 	if ((options & F_SRCADDR) != 0) {
@@ -1208,9 +1208,6 @@ main(int argc, char *argv[])
 	sigaction(SIGALRM, &si_sa, 0);
 	summary();
 
-	if (res != NULL)
-		freeaddrinfo(res);
-
         if(packet != NULL)
                 free(packet);
 



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