-rw-r--r-- | src/process.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/process.cc b/src/process.cc index 96c874f..6d3b2a2 100644 --- a/src/process.cc +++ b/src/process.cc | |||
@@ -92,19 +92,21 @@ void process::launch(const string& id,configuration& config) { | |||
92 | if(p<0) | 92 | if(p<0) |
93 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to fork()"); | 93 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to fork()"); |
94 | if(!p) { | 94 | if(!p) { |
95 | // child | 95 | // child |
96 | try { | 96 | try { |
97 | setsid(); | 97 | setsid(); |
98 | if(!group.empty()) { | ||
98 | if(user.empty()) { | 99 | if(user.empty()) { |
99 | if((getgid()!=gid) && setgid(gid)) | 100 | if((getgid()!=gid) && setgid(gid)) |
100 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to setgid()"); | 101 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to setgid()"); |
101 | }else{ | 102 | }else{ |
102 | if(initgroups(user.c_str(),gid)) | 103 | if(initgroups(user.c_str(),gid)) |
103 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to initgroups()"); | 104 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to initgroups()"); |
104 | } | 105 | } |
106 | } | ||
105 | if(!chroot.empty()) { | 107 | if(!chroot.empty()) { |
106 | if(::chroot(chroot.c_str())) | 108 | if(::chroot(chroot.c_str())) |
107 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to chroot()"); | 109 | throw runtime_error(string(__PRETTY_FUNCTION__)+": failed to chroot()"); |
108 | } | 110 | } |
109 | if(!user.empty()) { | 111 | if(!user.empty()) { |
110 | if((getuid()!=uid) && setuid(uid)) | 112 | if((getuid()!=uid) && setuid(uid)) |