diff options
author | Roy Marples <roy@marples.name> | 2007-11-28 13:40:15 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2007-11-28 13:40:15 +0000 |
commit | d651155b61a6f9ca3fe53e60718f3b43e04b23c8 (patch) | |
tree | f0bd9abdc7b9d34daab078ae7f8b186781228ac4 /src | |
parent | 8ea741d6994c66df1c2a3851ea1a806e8c87e249 (diff) |
Sanitize our PATH a bit better, and terminate it correctly in start-stop-daemon.
Diffstat (limited to 'src')
-rw-r--r-- | src/start-stop-daemon.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/start-stop-daemon.c b/src/start-stop-daemon.c index 551bad58..31752fb5 100644 --- a/src/start-stop-daemon.c +++ b/src/start-stop-daemon.c @@ -916,6 +916,7 @@ int start_stop_daemon (int argc, char **argv) char *token; char *np; int l; + int t; p += 5; while ((token = strsep (&p, ":"))) { @@ -923,15 +924,17 @@ int start_stop_daemon (int argc, char **argv) strcmp (token, RC_LIBDIR "/sbin") == 0) continue; + t = strlen (token); if (newpath) { l = strlen (newpath); - newpath = xrealloc (newpath, sizeof (char) * - (l + strlen (token) + 2)); + newpath = xrealloc (newpath, sizeof (char) * (l + t + 2)); np = newpath + l; *np++ = ':'; memcpy (np, token, sizeof (char) * strlen (token)); + np += t; + *np = '\0'; } else { - l = strlen ("PATH=") + strlen (token) + 1; + l = strlen ("PATH=") + t + 1; newpath = xmalloc (sizeof (char) * l); snprintf (newpath, l, "PATH=%s", token); } |