aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosef Karthauser <joe@FreeBSD.org>2000-04-30 20:53:54 +0000
committerJosef Karthauser <joe@FreeBSD.org>2000-04-30 20:53:54 +0000
commit30395bb5f1bdae1546746d112798e528e9464924 (patch)
treec4e6b2bf1c864d64bd5da8364de14da5fdc8a4c3
parent2ef72bc15297f15397596873c4e2babaf6a02e55 (diff)
Notes
-rw-r--r--sbin/natd/natd.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/sbin/natd/natd.c b/sbin/natd/natd.c
index 2714a157e0a6..c03a7ae79500 100644
--- a/sbin/natd/natd.c
+++ b/sbin/natd/natd.c
@@ -421,9 +421,9 @@ static void DaemonMode ()
static void ParseArgs (int argc, char** argv)
{
int arg;
- char* parm;
char* opt;
char parmBuf[256];
+ int len; /* bounds checking */
for (arg = 1; arg < argc; arg++) {
@@ -434,23 +434,27 @@ static void ParseArgs (int argc, char** argv)
Usage ();
}
- parm = NULL;
parmBuf[0] = '\0';
+ len = 0;
while (arg < argc - 1) {
if (argv[arg + 1][0] == '-')
break;
- if (parm)
- strcat (parmBuf, " ");
+ if (len) {
+ strncat (parmBuf, " ", sizeof(parmBuf) - (len + 1));
+ len += strlen(parmBuf + len);
+ }
++arg;
- parm = parmBuf;
- strcat (parmBuf, argv[arg]);
+ strncat (parmBuf, argv[arg], sizeof(parmBuf) - (len + 1));
+ len += strlen(parmBuf + len);
+
}
- ParseOption (opt + 1, parm, 1);
+ ParseOption (opt + 1, (len ? parmBuf : NULL), 1);
+
}
}