Nmap Development mailing list archives
RFE: make more functions and variables static
From: "Dmitry V. Levin" <ldv () altlinux org>
Date: Sat, 4 Mar 2006 02:47:44 +0300
Hi, While updating my drop-priv patch for nmap-4.01, I noticed that nmap *.o files define a lot of global symbols, obviously more than necessary. I wrote a simple script (for GNU/Linux) to find potential symbols which could be made static: === for f in *.o; do nm -g "$f" |awk -vf="$f" 'NF==3 && $2~/^[BDT]$/ {printf("%s\t%s\n",$3,f)}' done |sort >def for f in *.o; do nm -g "$f" |awk -vf="$f" 'NF==2 && $1=="U" {printf("%s\t%s\n",$2,f)}' done |sort >ref comm -23 \ <(cut -f1 def |sort -u) \ <(join def ref |awk '$2!=$3 {print $1}' |sort -u) | c++filt |fgrep -v :: |grep -vw main === (The "main" symbol is false alarm, c++ methods are not interesting at this stage of analisys.) On my patched nmap-4.01 sources this script outputs ~100 symbols, your output may differ slightly: === MacTable AVal_match(AVal*, AVal*, unsigned long*, unsigned long*, int) WriteSInfo(char*, int, int, int, unsigned char const*) printusage(char*, int) gcd_n_ulong(long, unsigned long*) processData(UltraScanInfo*) skid_output(char*) NmapArpCache(int, sockaddr_storage*, unsigned char*) end_svcprobe(void*, serviceprobestate, ServiceGroup*, ServiceNFO*, void*) findMACEntry(int) readippacket(unsigned char const*, int) send_udp_raw(int, eth_nfo*, in_addr*, in_addr const*, int, unsigned short, unsigned short, unsigned short, char*, unsigned short) sport_decode(UltraScanInfo*, unsigned short, unsigned int*, unsigned int*) getattrbyname(AVal*, char const*) gettestbyname(FingerTest*, char const*) hostInExclude(sockaddr*, unsigned int, TargetGroup*) hoststructfry(Target**, int) idle_treescan(idle_proxy_info*, Target*, unsigned short*, int, int) ipid_distance(int, unsigned short, unsigned short) printAnyStats(UltraScanInfo*) readhoststate(int) readudppacket(unsigned char const*, int) sendPingProbe(UltraScanInfo*, HostScanStats*) sendpingquery(int, int, eth_handle*, Target*, unsigned short, unsigned short, scanstats*, timeval*, int, pingtech) add_dns_server(char*) ip_is_reserved(in_addr*) output_summary() parse_etchosts(char*) process_result(unsigned int, char*, int, unsigned short) get_fingerprint(Target*, seq_info*) ippackethdrinfo(unsigned char const*, unsigned int) lookup_etchosts(unsigned int) parse_classline(FingerTest*, char*, int, int*) rpc_are_we_done(char*, int, Target*, portinfo*, scanstats*, portinfolist*, rpcscaninfo*) sendpingqueries(int, int, eth_handle*, Target*, unsigned short, unsigned short, scanstats*, timeval*, int, pingtech) allow_ipid_match(unsigned short, unsigned short) check_capacities(dns_server_s*) getInterfaceByIP(sockaddr_storage*) get_ping_results(int, pcap*, Target**, int, timeval*, pingtune*, timeout_info*, int, pingtech*, scan_lists*) ipid_proxy_probe(idle_proxy_info*, int*, int*) read_evt_handler(void*, void*, void*) close_dns_servers() match_fingerprint(FingerTest*, FingerPrintResults*, FingerTest**, double) parse_inaddr_arpa(unsigned char*, int) write_evt_handler(void*, void*, void*) adjust_idle_timing(idle_proxy_info*, Target*, int, int) do_possible_writes() getInterfaceByName(char*) idlescan_countopen(idle_proxy_info*, Target*, unsigned short*, int, timeval*, timeval*) print_MAC_XML_Info(Target*) collect_dnet_routes(route_entry const*, void*) connect_dns_servers() connect_evt_handler(void*, void*, void*) grab_next_host_spec(_IO_FILE*, int, char**) idlescan_countopen2(idle_proxy_info*, Target*, unsigned short*, int, timeval*, timeval*) nmap_mass_rdns_core(Target**, int) parse_resolvdotconf() send_frag_ip_packet(int, eth_nfo*, unsigned char*, unsigned int, unsigned int) sendconnecttcpquery(Target**, tcpqueryinfo*, Target*, int, unsigned short, timeval*, pingtune*, timeout_info*, int) sendrawtcppingquery(int, eth_nfo*, Target*, int, unsigned short, unsigned short, timeval*, pingtune*) sendrawudppingquery(int, eth_nfo*, Target*, unsigned short, unsigned short, timeval*, pingtune*) compare_fingerprints(FingerTest*, FingerTest*, int) initialize_idleproxy(idle_proxy_info*, char*, in_addr const*) send_closedudp_probe(int, eth_nfo*, in_addr const*, unsigned short, unsigned short) advance_past_dns_name(unsigned char*, int, int, int*) remove_excluded_ports(AllProbes*, ServiceGroup*) reverse_testing_order(portinfolist*, portinfo*) sendconnecttcpqueries(Target**, tcpqueryinfo*, Target*, unsigned short, timeval*, pingtune*, timeout_info*, int) encoded_name_to_normal(unsigned char*, char*, int) parse_fingerprint_file(char*) put_dns_packet_on_wire(request_s*) ultrascan_adjust_times(UltraScanInfo*, HostScanStats*, UltraProbe*, timeval*) collect_dnet_interfaces(intf_entry const*, void*) fileexistsandisreadable(char*) fingerprint_iptcppacket(ip*, int, unsigned int) fingerprint_portunreach(ip*, udpprobeinfo*) launchSomeServiceProbes(void*, ServiceGroup*) deal_with_timedout_reads() parse_single_fingerprint(char*) sendrawtcpudppingqueries(int, eth_handle*, Target*, int, unsigned short, timeval*, pingtune*) servicescan_read_handler(void*, void*, void*) shouldWePrintFingerprint(ServiceNFO*) add_integer_to_dns_packet(char*, int) servicescan_write_handler(void*, void*, void*) get_connecttcpscan_results(tcpqueryinfo*, Target**, timeval*, pingtune*, timeout_info*) servicescan_connect_handler(void*, void*, void*) ultrascan_port_pspec_update(UltraScanInfo*, HostScanStats*, probespec const*, int) output_rangelist_given_ports(int, unsigned short*, int) parse_nmap_service_probe_file(AllProbes*, char*) Write(int, void const*, unsigned int) doArp(char const*, unsigned char const*, sockaddr_storage const*, sockaddr_storage const*, unsigned char*) Sendto(char*, int, unsigned char const*, int, unsigned int, sockaddr*, int) gcd_uint(unsigned int, unsigned int) massping(Target**, int, scan_lists*, int) str2AVal(char*) tty_done() gcd_ulong(unsigned long, unsigned long) read_timeouts === -- ldv
_______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev
Current thread:
- RFE: make more functions and variables static Dmitry V. Levin (Mar 03)
- Re: RFE: make more functions and variables static Fyodor (Mar 05)
- Re: RFE: make more functions and variables static Dmitry V. Levin (Mar 05)
- Re: RFE: make more functions and variables static Fyodor (Mar 05)
- RE: RFE: make more functions and variables static Sina Bahram (Mar 05)
- Re: RFE: make more functions and variables static Dmitry V. Levin (Mar 05)
- Re: RFE: make more functions and variables static Fyodor (Mar 05)