Fix possible _SC_OPEN_MAX max problem on AIX.
authorWerner Koch <wk@gnupg.org>
Fri, 15 Jan 2016 15:16:38 +0000 (16:16 +0100)
committerWerner Koch <wk@gnupg.org>
Fri, 15 Jan 2016 15:16:38 +0000 (16:16 +0100)
* src/posix-io.c [HAVE_STDINT_H]: Include stdint.h.
(get_max_fds): Limit returned value for too high values.
--

Signed-off-by: Werner Koch <wk@gnupg.org>
src/posix-io.c

index ac823fc..e49c71e 100644 (file)
@@ -23,6 +23,9 @@
 #endif
 #include <stdio.h>
 #include <stdlib.h>
 #endif
 #include <stdio.h>
 #include <stdlib.h>
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
 #include <string.h>
 #include <assert.h>
 #include <errno.h>
 #include <string.h>
 #include <assert.h>
 #include <errno.h>
@@ -331,6 +334,16 @@ get_max_fds (void)
       fds = 1024;
     }
 
       fds = 1024;
     }
 
+  /* AIX returns INT32_MAX instead of a proper value.  We assume that
+   * this is always an error and use a more reasonable limit.  */
+#ifdef INT32_MAX
+  if (fds == INT32_MAX)
+    {
+      source = "aix-fix";
+      fds = 1024;
+    }
+#endif
+
   TRACE2 (DEBUG_SYSIO, "gpgme:max_fds", 0, "max fds=%i (%s)", fds, source);
   return fds;
 }
   TRACE2 (DEBUG_SYSIO, "gpgme:max_fds", 0, "max fds=%i (%s)", fds, source);
   return fds;
 }