From a600f265e1f9439dedd2c52114a3d12f300d8203 Mon Sep 17 00:00:00 2001 From: dmiller Date: Fri, 17 Jul 2026 21:56:29 +0000 Subject: [PATCH] Replace repeated strcat with Snprintf --- main.cc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/main.cc b/main.cc index a9bab3223..bdfd3d918 100644 --- a/main.cc +++ b/main.cc @@ -142,13 +142,22 @@ int main(int argc, char *argv[]) { try { if ((cptr = getenv("NMAP_ARGS"))) { - if (Snprintf(command, sizeof(command), "nmap %s", cptr) >= (int) sizeof(command)) { - error("Warning: NMAP_ARGS variable is too long, truncated"); + char *tail = command; + int rem = sizeof(command); + int n = Snprintf(tail, rem, "nmap %s", cptr); + if (n >= rem) { + fatal("NMAP_ARGS variable is too long"); } + tail += n; + rem -= n; /* copy rest of command-line arguments */ - for (i = 1; i < argc && strlen(command) + strlen(argv[i]) + 1 < sizeof(command); i++) { - strcat(command, " "); - strcat(command, argv[i]); + for (i = 1; i < argc; i++) { + n = Snprintf(tail, rem, " %s", argv[i]); + if (n >= rem) { + fatal("NMAP_ARGS and command line together exceed %lu bytes", sizeof(command)); + } + tail += n; + rem -= n; } myargc = arg_parse(command, &myargv); if (myargc < 1) {