traceroute: free some memory allocated by xzalloc()
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Fri, 8 Mar 2013 19:50:51 +0000 (16:50 -0300)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 15 Mar 2013 00:23:48 +0000 (01:23 +0100)
Signed-off-by: Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/traceroute.c

index 6b7b2eb..0c18d6c 100644 (file)
@@ -805,6 +805,7 @@ common_traceroute_main(int op, char **argv)
        char *waittime_str;
        char *pausemsecs_str;
        char *first_ttl_str;
+       char *dest_str;
 #if ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE
        llist_t *source_route_list = NULL;
        int lsrr = 0;
@@ -1059,8 +1060,12 @@ common_traceroute_main(int op, char **argv)
        xsetgid(getgid());
        xsetuid(getuid());
 
-       printf("traceroute to %s (%s)", argv[0],
-                       xmalloc_sockaddr2dotted_noport(&dest_lsa->u.sa));
+       dest_str = xmalloc_sockaddr2dotted_noport(&dest_lsa->u.sa);
+       printf("traceroute to %s (%s)", argv[0], dest_str);
+       if (ENABLE_FEATURE_CLEAN_UP) {
+               free(dest_str);
+       }
+
        if (op & OPT_SOURCE)
                printf(" from %s", source);
        printf(", %d hops max, %d byte packets\n", max_ttl, packlen);
@@ -1216,6 +1221,12 @@ common_traceroute_main(int op, char **argv)
                }
        }
 
+       if (ENABLE_FEATURE_CLEAN_UP) {
+               free(to);
+               free(lastaddr);
+               free(from_lsa);
+       }
+
        return 0;
 }