summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2007-11-28 13:40:15 +0000
committerRoy Marples <roy@marples.name>2007-11-28 13:40:15 +0000
commitd651155b61a6f9ca3fe53e60718f3b43e04b23c8 (patch)
treef0bd9abdc7b9d34daab078ae7f8b186781228ac4 /src
parent8ea741d6994c66df1c2a3851ea1a806e8c87e249 (diff)
downloadopenrc-d651155b61a6f9ca3fe53e60718f3b43e04b23c8.tar.gz
openrc-d651155b61a6f9ca3fe53e60718f3b43e04b23c8.tar.bz2
openrc-d651155b61a6f9ca3fe53e60718f3b43e04b23c8.tar.xz
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.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/start-stop-daemon.c b/src/start-stop-daemon.c
index 551bad5..31752fb 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);
}