summaryrefslogtreecommitdiffabout
path: root/src/process.cc
authorMichael Krelin <hacker@klever.net>2011-10-10 21:26:52 (UTC)
committer Michael Krelin <hacker@klever.net>2011-10-12 19:22:51 (UTC)
commit970337c91c02afa9b8d33ab5596270594ffe58e6 (patch) (side-by-side diff)
tree198e49630826aea7289f60635f52ccb2476d36cc /src/process.cc
parent6a68fcae465905e904eea248ffe6b1ed6b8297a4 (diff)
downloaddudki-970337c91c02afa9b8d33ab5596270594ffe58e6.zip
dudki-970337c91c02afa9b8d33ab5596270594ffe58e6.tar.gz
dudki-970337c91c02afa9b8d33ab5596270594ffe58e6.tar.bz2
Some work in compiler happiness department.
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'src/process.cc') (more/less context) (show whitespace changes)
-rw-r--r--src/process.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/process.cc b/src/process.cc
index 4807b98..3e9cc2b 100644
--- a/src/process.cc
+++ b/src/process.cc
@@ -1,21 +1,22 @@
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <pwd.h>
#include <grp.h>
#include <dirent.h>
#include <sys/wait.h>
#include <syslog.h>
+#include <stdlib.h>
#include <errno.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <stdexcept>
#include <string>
#include <vector>
using namespace std;
#include "process.h"
#include "configuration.h"
static multimap<string,pid_t> procpids;
@@ -103,25 +104,25 @@ void process::launch(const string& id,configuration& config) {
if(initgroups(user.c_str(),gid))
throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to initgroups()");
}
}
if(!chroot.empty()) {
if(::chroot(chroot.c_str()))
throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to chroot()");
}
if(!user.empty()) {
if((getuid()!=uid) && setuid(uid))
throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to setuid()");
}
- char *argv[] = { "/bin/sh", "-c", (char*)restart_cmd.c_str(), NULL };
+ char *argv[] = { const_cast<char*>("/bin/sh"), const_cast<char*>("-c"), (char*)restart_cmd.c_str(), NULL };
close(0); close(1); close(2);
execv("/bin/sh",argv);
}catch(exception& e) {
syslog(LOG_ERR,"Error trying to launch process '%s': %s",id.c_str(),e.what());
}
_exit(-1);
}
// parent
int rv;
if(waitpid(p,&rv,0)<0)
throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to waitpid()");
}