[Netpass-devel] NetPass/bin npsvc.pl,1.3,1.4
Brought to you by:
jeffmurphy
From: jeff m. <jef...@us...> - 2005-08-10 19:57:35
|
Update of /cvsroot/netpass/NetPass/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9643/bin Modified Files: npsvc.pl Log Message: bug fixes Index: npsvc.pl =================================================================== RCS file: /cvsroot/netpass/NetPass/bin/npsvc.pl,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- npsvc.pl 10 Aug 2005 19:52:15 -0000 1.3 +++ npsvc.pl 10 Aug 2005 19:57:27 -0000 1.4 @@ -179,23 +179,31 @@ return; } - _log("DEBUG", qq{exec'ing as $as cmd "$cmd"\n}) if $D; + _log("DEBUG", qq{forking to exec as $as cmd "$cmd"\n}) if $D; my $child = fork; - return if ($child); # parent + return if (defined($child) && ($child > 0)); # parent - open STDIN, '/dev/null'; - open STDOUT, '>/dev/null'; - setsid; + #open STDIN, '/dev/null'; + #open STDOUT, '>/dev/null'; + setsid or _log("WARN", "$$ child failed to setsid $!\n"); - if (setgid($gid)) { - _log("ERROR", "child $$ failed to setgid($gid) $!\n"); + _log("DEBUG", "$$ inchild change to uid=$uid gid=$gid\n"); + + my $rv = setgid($gid); + + unless ($rv) { + _log("ERROR", "$$ child failed to setgid($gid) rv=$rv err=$!\n"); exit 0; } - if (setuid($uid)) { - _log("ERROR", "child $$ failed to setuid($uid) $!\n"); + $rv = setuid($uid); + unless ($rv) { + _log("ERROR", "$$ child failed to setuid($uid) rv=$rv err=$!\n"); exit 0; } - exec($cmd); + { + _log("DEBUG", qq{$$ in child. calling exec\n}) if $D; + exec($cmd); + } _log("ERROR", "child $$ failed to exec($cmd) $!\n"); exit 0; } |