Pedantic removal of strcpy that mostly serves to make it easier to find and remove other unsafe (buffer overflow prone) uses of strcpy.
To apply: cd pmacct-0.11.5 patch -p1 < strlcpy.patch Karl <k...@meme.com> Free Software: "You don't pay back, you pay forward." -- Robert A. Heinlein
diff -ruN pmacct-0.11.5/src/pmacctd.c pmacct-0.11.5-patched/src/pmacctd.c --- pmacct-0.11.5/src/pmacctd.c Wed Feb 18 04:19:05 2009 +++ pmacct-0.11.5-patched/src/pmacctd.c Wed Feb 18 15:39:20 2009 @@ -135,106 +135,106 @@ cfg_cmdline[rows] = malloc(SRVBUFLEN); switch (cp) { case 'P': - strcpy(cfg_cmdline[rows], "plugins: "); + strlcpy(cfg_cmdline[rows], "plugins: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'D': - strcpy(cfg_cmdline[rows], "daemonize: true"); + strlcpy(cfg_cmdline[rows], "daemonize: true", SRVBUFLEN); rows++; break; case 'd': debug = TRUE; - strcpy(cfg_cmdline[rows], "debug: true"); + strlcpy(cfg_cmdline[rows], "debug: true", SRVBUFLEN); rows++; break; case 'n': - strcpy(cfg_cmdline[rows], "networks_file: "); + strlcpy(cfg_cmdline[rows], "networks_file: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'o': - strcpy(cfg_cmdline[rows], "ports_file: "); + strlcpy(cfg_cmdline[rows], "ports_file: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'N': - strcpy(cfg_cmdline[rows], "promisc: false"); + strlcpy(cfg_cmdline[rows], "promisc: false", SRVBUFLEN); rows++; break; case 'f': strlcpy(config_file, optarg, sizeof(config_file)); break; case 'F': - strcpy(cfg_cmdline[rows], "pidfile: "); + strlcpy(cfg_cmdline[rows], "pidfile: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'c': - strcpy(cfg_cmdline[rows], "aggregate: "); + strlcpy(cfg_cmdline[rows], "aggregate: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'b': - strcpy(cfg_cmdline[rows], "imt_buckets: "); + strlcpy(cfg_cmdline[rows], "imt_buckets: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'm': - strcpy(cfg_cmdline[rows], "imt_mem_pools_number: "); + strlcpy(cfg_cmdline[rows], "imt_mem_pools_number: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); have_num_memory_pools = TRUE; rows++; break; case 'p': - strcpy(cfg_cmdline[rows], "imt_path: "); + strlcpy(cfg_cmdline[rows], "imt_path: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'r': - strcpy(cfg_cmdline[rows], "sql_refresh_time: "); + strlcpy(cfg_cmdline[rows], "sql_refresh_time: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; cfg_cmdline[rows] = malloc(SRVBUFLEN); - strcpy(cfg_cmdline[rows], "print_refresh_time: "); + strlcpy(cfg_cmdline[rows], "print_refresh_time: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'v': - strcpy(cfg_cmdline[rows], "sql_table_version: "); + strlcpy(cfg_cmdline[rows], "sql_table_version: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 's': - strcpy(cfg_cmdline[rows], "imt_mem_pools_size: "); + strlcpy(cfg_cmdline[rows], "imt_mem_pools_size: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'S': - strcpy(cfg_cmdline[rows], "syslog: "); + strlcpy(cfg_cmdline[rows], "syslog: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'i': - strcpy(cfg_cmdline[rows], "interface: "); + strlcpy(cfg_cmdline[rows], "interface: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'I': - strcpy(cfg_cmdline[rows], "pcap_savefile: "); + strlcpy(cfg_cmdline[rows], "pcap_savefile: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break; case 'w': - strcpy(cfg_cmdline[rows], "interface_wait: true"); + strlcpy(cfg_cmdline[rows], "interface_wait: true", SRVBUFLEN); rows++; break; case 'W': - strcpy(cfg_cmdline[rows], "savefile_wait: true"); + strlcpy(cfg_cmdline[rows], "savefile_wait: true", SRVBUFLEN); rows++; break; case 'L': - strcpy(cfg_cmdline[rows], "snaplen: "); + strlcpy(cfg_cmdline[rows], "snaplen: ", SRVBUFLEN); strncat(cfg_cmdline[rows], optarg, CFG_LINE_LEN(cfg_cmdline[rows])); rows++; break;
_______________________________________________ pmacct-discussion mailing list http://www.pmacct.net/#mailinglists