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
This commit is contained in:
Marcelo Araujo 2016-07-05 07:01:42 +00:00
parent 91ebf7d765
commit 8ac248ea27
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=302342

View File

@ -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);