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.levavass...@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);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to