summaryrefslogtreecommitdiffstats
path: root/mbbsd/args.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/args.c')
-rw-r--r--mbbsd/args.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/mbbsd/args.c b/mbbsd/args.c
index 8d6ee98d..8a7658a7 100644
--- a/mbbsd/args.c
+++ b/mbbsd/args.c
@@ -10,9 +10,10 @@ initsetproctitle(int argc, char **argv, char **envp)
#else
-char **Argv = NULL; /* pointer to argument vector */
-char *LastArgv = NULL;/* end of argv */
-extern char **environ;
+static char **Argv = NULL; /* pointer to argument vector */
+static int arg_size; /* end of argv */
+
+extern char **environ;
void
initsetproctitle(int argc, char **argv, char **envp)
@@ -20,6 +21,7 @@ initsetproctitle(int argc, char **argv, char **envp)
register int i;
int len=0,nenv=0;
+
/*
* Move the environment so setproctitle can use the space at the top of
* memory.
@@ -40,9 +42,9 @@ initsetproctitle(int argc, char **argv, char **envp)
/* Save start and extent of argv for setproctitle. */
Argv = argv;
if (i > 0)
- LastArgv = envp[i - 1] + strlen(envp[i - 1]);
+ argv_size = envp[i - 1] + strlen(envp[i - 1]) - Argv[0];
else
- LastArgv = argv[argc - 1] + strlen(argv[argc - 1]);
+ argv_size = argv[argc - 1] + strlen(argv[argc - 1]) - Argv[0];
}
static void
@@ -51,9 +53,9 @@ do_setproctitle(const char *cmdline)
int len;
len = strlen(cmdline) + 1; // +1 for '\0'
- if(len > LastArgv - Argv[0] - 2) // 2 ??
- len = LastArgv - Argv[0] - 2;
- memset(Argv[0], 0, LastArgv-Argv[0]);
+ if(len > argv_size - 2) // 2 ??
+ len = argv_size - 2;
+ memset(Argv[0], 0, argv_size);
strlcpy(Argv[0], cmdline, len);
Argv[1] = NULL;
}