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>