mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-11 22:52:47 +01:00
scd,dirmngr: Keep the standard fds when daemonizing.
* dirmngr/dirmngr.c (main): Before calling setsid do not close the standard fds but connect them to /dev/null. * scd/scdaemon.c (main): Ditto. Noet that the old test for a log stream was even reverted. -- Note that this was fixed for gpg-agent 10 years ago on 2006-11-09. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
c4506a3f15
commit
4839e6d002
@ -1209,8 +1209,18 @@ main (int argc, char **argv)
|
|||||||
for (i=0; i <= 2; i++)
|
for (i=0; i <= 2; i++)
|
||||||
{
|
{
|
||||||
if (!log_test_fd (i) && i != fd )
|
if (!log_test_fd (i) && i != fd )
|
||||||
close (i);
|
{
|
||||||
|
if ( !close (i)
|
||||||
|
&& open ("/dev/null", i? O_WRONLY : O_RDONLY) == -1)
|
||||||
|
{
|
||||||
|
log_error ("failed to open '%s': %s\n",
|
||||||
|
"/dev/null", strerror (errno));
|
||||||
|
cleanup ();
|
||||||
|
dirmngr_exit (1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (setsid() == -1)
|
if (setsid() == -1)
|
||||||
{
|
{
|
||||||
log_error ("setsid() failed: %s\n", strerror(errno) );
|
log_error ("setsid() failed: %s\n", strerror(errno) );
|
||||||
|
@ -871,9 +871,19 @@ main (int argc, char **argv )
|
|||||||
/* Close stdin, stdout and stderr unless it is the log stream. */
|
/* Close stdin, stdout and stderr unless it is the log stream. */
|
||||||
for (i=0; i <= 2; i++)
|
for (i=0; i <= 2; i++)
|
||||||
{
|
{
|
||||||
if ( log_test_fd (i) && i != fd)
|
if (!log_test_fd (i) && i != fd )
|
||||||
close (i);
|
{
|
||||||
|
if ( !close (i)
|
||||||
|
&& open ("/dev/null", i? O_WRONLY : O_RDONLY) == -1)
|
||||||
|
{
|
||||||
|
log_error ("failed to open '%s': %s\n",
|
||||||
|
"/dev/null", strerror (errno));
|
||||||
|
cleanup ();
|
||||||
|
exit (1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (setsid() == -1)
|
if (setsid() == -1)
|
||||||
{
|
{
|
||||||
log_error ("setsid() failed: %s\n", strerror(errno) );
|
log_error ("setsid() failed: %s\n", strerror(errno) );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user