summaryrefslogtreecommitdiff
path: root/random
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2015-01-05 19:38:29 +0100
committerWerner Koch <wk@gnupg.org>2015-01-05 19:38:29 +0100
commit817472358a093438e802380caecf7139406400cf (patch)
treec9d7083fb4edc670e81c156834174f94beeccff2 /random
parent8c5eee51d9a25b143e41ffb7ff4a6b2a29b82d83 (diff)
downloadlibgcrypt-817472358a093438e802380caecf7139406400cf.tar.gz
random: Silent warning under NetBSD using rndunix
* random/rndunix.c (STDERR_FILENO): Define if needed. (start_gatherer): Re-open standard descriptors. Fix an unsigned/signed pointer warning. -- GnuPG-bug-id: 1702
Diffstat (limited to 'random')
-rw-r--r--random/rndunix.c19
1 files changed, 18 insertions, 1 deletions
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 );