summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2022-02-23 13:09:09 -0800
committerAlan Coopersmith <alan.coopersmith@oracle.com>2022-02-23 13:16:32 -0800
commit4a71fdf6d34df67d3f1335590da6ae3050128fb2 (patch)
treedd611dc996ba1650b5eb416d14ac8ff451d8cbe8
parent13b72ec5540757ccbb62c4b31961a556ab77d005 (diff)
Fix build on Solaris 11.3.0 - 11.3.8
Solaris 11.3.0 added getentropy() to libc and <sys/random.h> Solaris 11.3.9 added arc4random() to libc and <stdlib.h> Solaris 11.4.16 added getentropy() to <stdlib.h> So when building on Solaris releases from 11.3.0 to 11.3.8, libXdmcp would not find arc4random(), and thus fallback to using getentropy(), but was only looking for it in <stdlib.h>, resulting in a build error: Key.c: In function ‘arc4random_buf’: Key.c:86:5: error: implicit declaration of function ‘getentropy’ [-Werror=implicit-function-declaration] ret = getentropy (auth, len); ^ Reported-by: https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54628 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--Key.c5
-rw-r--r--configure.ac3
2 files changed, 8 insertions, 0 deletions
diff --git a/Key.c b/Key.c
index d61ad0e..eaaa90f 100644
--- a/Key.c
+++ b/Key.c
@@ -64,6 +64,11 @@ getbits (long data, unsigned char *dst)
#ifndef HAVE_ARC4RANDOM_BUF
+/* Solaris 11.3.0 - 11.4.15 only define getentropy() in <sys/random.h> */
+#if HAVE_GETENTROPY && HAVE_SYS_RANDOM_H
+# include <sys/random.h>
+#endif
+
static void
insecure_getrandom_buf (unsigned char *auth, int len)
{
diff --git a/configure.ac b/configure.ac
index 1c6292b..f79fb95 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,6 +52,9 @@ XORG_CHECK_SGML_DOCTOOLS(1.8)
# Checks for programs.
AC_PROG_LN_S
+# Checks for header files.
+AC_CHECK_HEADERS([sys/random.h])
+
# Checks for libraries.
AC_SEARCH_LIBS([recvfrom],[socket])