Fix possible AIX problem with sysconf in rndunix.

* cipher/rndunix.c [HAVE_STDINT_H]: Include stdint.h.
(start_gatherer): Detect misbehaving sysconf.
--

See
GnuPG-bug-id: 1778
for the reason of this patch. There is no concrete bug report but this
chnage should not harm.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2016-01-15 15:51:37 +01:00
parent e26706700f
commit a38dffde7b
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
1 changed files with 12 additions and 3 deletions

View File

@ -50,6 +50,9 @@
#include <config.h>
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
#include <string.h>
#include <assert.h>
@ -700,12 +703,18 @@ start_gatherer( int pipefd )
{ int nmax, n1, i;
#ifdef _SC_OPEN_MAX
if( (nmax=sysconf( _SC_OPEN_MAX )) < 0 ) {
#ifdef _POSIX_OPEN_MAX
# ifdef _POSIX_OPEN_MAX
nmax = _POSIX_OPEN_MAX;
#else
# else
nmax = 20; /* assume a reasonable value */
#endif
# endif
}
/* AIX returns INT32_MAX instead of a proper value. We assume that
* this is always an error and use a reasonable value. */
# ifdef INT32_MAX
if (nmax == INT32_MAX)
nmax = 20;
# endif
#else
nmax = 20; /* assume a reasonable value */
#endif