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;
}
|