From 50a4817671f7239d002a7bb57cd8f2db5b2a1c38 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 25 Jan 2013 06:26:21 +0000 Subject: [PATCH] Remove dynamically allocated fakeargv. This used to be used to hold the original argv before quashing with -q. Now that -q is gone, it was just a copy of argv. fakeargv was also causing Valgrind to complain about leaked memory. it wasn't a real leak, but now it's out of the report anyway. --- libnetutil/netutil.cc | 4 ++-- nmap.cc | 25 ++++++------------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/libnetutil/netutil.cc b/libnetutil/netutil.cc index 55c35835e..8e2a3ace8 100644 --- a/libnetutil/netutil.cc +++ b/libnetutil/netutil.cc @@ -4514,7 +4514,7 @@ size_t read_host_from_file(FILE *fp, char *buf, size_t n) /* Return next target host specification from the supplied stream. * if parameter "random" is set to true, then the function will * return a random, non-reserved, IP address in decimal-dot notation */ -const char *grab_next_host_spec(FILE *inputfd, bool random, int argc, const char **fakeargv) { +const char *grab_next_host_spec(FILE *inputfd, bool random, int argc, const char **argv) { static char host_spec[1024]; struct in_addr ip; size_t n; @@ -4525,7 +4525,7 @@ const char *grab_next_host_spec(FILE *inputfd, bool random, int argc, const char } while (ip_is_reserved(&ip)); Strncpy(host_spec, inet_ntoa(ip), sizeof(host_spec)); } else if (!inputfd) { - return( (optind < argc)? fakeargv[optind++] : NULL); + return( (optind < argc)? argv[optind++] : NULL); } else { n = read_host_from_file(inputfd, host_spec, sizeof(host_spec)); if (n == 0) diff --git a/nmap.cc b/nmap.cc index 7ad4f16f4..55b3ec226 100644 --- a/nmap.cc +++ b/nmap.cc @@ -1585,7 +1585,6 @@ int nmap_main(int argc, char *argv[]) { char hostname[MAXHOSTNAMELEN + 1] = ""; struct sockaddr_storage ss; size_t sslen; - char **fakeargv = NULL; now = time(NULL); local_time = localtime(&now); @@ -1598,19 +1597,12 @@ int nmap_main(int argc, char *argv[]) { if (argc < 2) printusage(-1); - /* argv faking silliness */ - fakeargv = (char **) safe_malloc(sizeof(char *) * (argc + 1)); - for (i = 0; i < argc; i++) { - fakeargv[i] = strdup(argv[i]); - } - fakeargv[argc] = NULL; - Targets.reserve(100); #ifdef WIN32 win_pre_init(); #endif - parse_options(argc, fakeargv); + parse_options(argc, argv); tty_init(); // Put the keyboard in raw mode @@ -1687,14 +1679,14 @@ int nmap_main(int argc, char *argv[]) { std::string command; if (argc > 0) - command += fakeargv[0]; + command += argv[0]; for (i = 1; i < argc; i++) { command += " "; - command += fakeargv[i]; + command += argv[i]; } xml_start_comment(); - xml_write_escaped(" %s %s scan initiated %s as: %s ", NMAP_NAME, NMAP_VERSION, mytime, join_quoted(fakeargv, argc).c_str()); + xml_write_escaped(" %s %s scan initiated %s as: %s ", NMAP_NAME, NMAP_VERSION, mytime, join_quoted(argv, argc).c_str()); xml_end_comment(); xml_newline(); @@ -1705,7 +1697,7 @@ int nmap_main(int argc, char *argv[]) { xml_open_start_tag("nmaprun"); xml_attribute("scanner", "nmap"); - xml_attribute("args", "%s", join_quoted(fakeargv, argc).c_str()); + xml_attribute("args", "%s", join_quoted(argv, argc).c_str()); xml_attribute("start", "%lu", (unsigned long) timep); xml_attribute("startstr", "%s", mytime); xml_attribute("version", "%s", NMAP_VERSION); @@ -1814,7 +1806,7 @@ int nmap_main(int argc, char *argv[]) { } #endif - HostGroupState hstate(o.ping_group_sz, o.randomize_hosts, argc, (const char **) fakeargv); + HostGroupState hstate(o.ping_group_sz, o.randomize_hosts, argc, (const char **) argv); do { ideal_scan_group_sz = determineScanGroupSize(o.numhosts_scanned, &ports); @@ -2075,11 +2067,6 @@ int nmap_main(int argc, char *argv[]) { eth_close_cached(); if (o.release_memory) { - /* Free fake argv */ - for (i = 0; i < argc; i++) - free(fakeargv[i]); - free(fakeargv); - nmap_free_mem(); } return 0;