summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac7
-rw-r--r--random/rndunix.c19
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 );