On Fri, Dec 24, 2004 at 08:00:37PM +0100, Florian Weimer wrote: > Bug #287119 is caused by the "umask(0);" line in the following code > snippet: > > sub become_daemon { > my $child = fork; > die "Can't fork: $!" unless defined($child); > exit(0) if $child; # parent dies; > POSIX::setsid(); # become session leader > open(STDIN,"</dev/null"); > open(STDOUT,">/dev/null"); > open(STDERR, '>&STDOUT'); Shouldn't the other descriptors be closed too? Are there any circumstances under which it would make a sense not to close all? > chdir '/'; # change working directory > umask(0); # forget file mode creation mask > $ENV{PATH} = '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin'; > delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; > $SIG{CHLD} = \&reap_child; > > # signal handler for child die events > $SIG{TERM} = $SIG{INT} = \&do_term; > $SIG{HUP} = \&do_hup; > } > > Apparently, this is part of some standard Perl example for > implementing daemons, which means other packages might be affected as > well. Symptoms are files which are created world-writable. For > pperl, I'm going to remove the line and add a regression test. Come on, it's not a bug, once it's a part of the documentation!!</sarcasm> -- )^o-o^| jabber: rdancer@NJS.NetLab.Cz | .v K e-mail: jjminar FastMail FM ` - .' phone: +44(0)7981 738 696 \ __/Jan icq: 345 355 493 __|o|__Minář irc: rdancer@IRC.FreeNode.Net
Attachment:
pgpep5QK8i9Sz.pgp
Description: PGP signature