diff options
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | random/rndunix.c | 19 |
2 files changed, 21 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac index 161571a1..4cfebe7b 100644 --- a/configure.ac +++ b/configure.ac @@ -2184,11 +2184,10 @@ cat <<G10EOF Entropy Gathering Daemon (EGD) which provides a entropy source for the whole system. It is written - in Perl and available at the GnuPG FTP servers. To enable EGD you - should rerun configure with the option "--enable-static-rnd=egd". - For more information consult the GnuPG webpages: + in Perl and available at the GnuPG FTP servers. For more information + consult the GnuPG site: - http://www.gnupg.org/download.html#egd + https://gnupg.org/related_software/swlist.html#egd G10EOF fi diff --git a/random/rndunix.c b/random/rndunix.c index 1b810d72..315906b0 100644 --- a/random/rndunix.c +++ b/random/rndunix.c @@ -144,6 +144,9 @@ #ifndef STDOUT_FILENO #define STDOUT_FILENO 1 #endif +#ifndef STDERR_FILENO +#define STDERR_FILENO 2 +#endif #define GATHER_BUFSIZE 49152 /* Usually about 25K are filled */ @@ -766,13 +769,27 @@ start_gatherer( int pipefd ) fclose(stderr); /* Arrghh!! It's Stuart code!! */ + /* Mary goes to Berkeley: NetBSD emits warnings if the standard + descriptors are not open when running setuid program. Thus we + connect them to the bitbucket if they are not already open. */ + { + struct stat statbuf; + + if (fstat (STDIN_FILENO, &statbuf) == -1 && errno == EBADF) + open ("/dev/null",O_RDONLY); + if (fstat (STDOUT_FILENO, &statbuf) == -1 && errno == EBADF) + open ("/dev/null",O_WRONLY); + if (fstat (STDERR_FILENO, &statbuf) == -1 && errno == EBADF) + open ("/dev/null",O_WRONLY); + } + for(;;) { GATHER_MSG msg; size_t nbytes; const char *p; msg.usefulness = slow_poll( dbgfp, dbgall, &nbytes ); - p = gather_buffer; + p = (const char*)gather_buffer; while( nbytes ) { msg.ndata = nbytes > sizeof(msg.data)? sizeof(msg.data) : nbytes; memcpy( msg.data, p, msg.ndata ); |