summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorJon TURNEY <jon.turney@dronecode.org.uk>2015-07-06 17:15:44 +0100
committerAdam Jackson <ajax@redhat.com>2015-09-21 13:07:02 -0400
commitcdd1d58159140759052ec043bc9828d94ba97bc7 (patch)
treee3333e4eaa8c01c1ecd806dce2f180729749be2c /configure.ac
parentf8a2c087c89ed5b638a2e62987f255d3f04f914e (diff)
mingw: Fix NO_LOCAL_CLIENT_CRED build
Commit 4b4b9086 "os: support new implicit local user access mode [CVE-2015-3164 2/3]" carefully places the relevant code it adds under !NO_LOCAL_CLIENT_CRED, but unfortunately doesn't notice that NO_LOCAL_CLIENT_CRED is defined as a side-effect in the middle of GetLocalClientCreds(), so many of these checks precede its definition. Move the check if NO_LOCAL_CLIENT_CRED should be defined to configure.ac, so it always occurs before it's first use. v2: Move check to configure.ac v3: Use AC_CACHE_CHECK and name cache varaible appropriately [ajax: Massaged commit message] Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Ray Strode <rstrode@redhat.com>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac18
1 files changed, 18 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index bab7d89bd..0ab756dc7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -223,6 +223,24 @@ AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup])
AC_CHECK_DECLS([program_invocation_short_name], [], [], [[#include <errno.h>]])
+dnl Check for SO_PEERCRED #define
+AC_CACHE_CHECK([for SO_PEERCRED in sys/socket.h],
+ [xorg_cv_sys_have_so_peercred],
+ [AC_EGREP_CPP(yes_have_so_peercred,[
+#include <sys/types.h>
+#include <sys/socket.h>
+#ifdef SO_PEERCRED
+yes_have_so_peercred
+#endif
+],
+ [xorg_cv_sys_have_so_peercred=yes],
+ [xorg_cv_sys_have_so_peercred=no])])
+
+dnl define NO_LOCAL_CLIENT_CRED if no getpeereid, getpeerucred or SO_PEERCRED
+if test "x$ac_cv_func_getpeereid" = xno && test "x$ac_cv_func_getpeerucred" = xno && test "x$xorg_cv_sys_have_so_peercred" = xno ; then
+ AC_DEFINE([NO_LOCAL_CLIENT_CRED], 1, [Define to 1 if no local socket credentials interface exists])
+fi
+
dnl Find the math libary, then check for cbrt function in it.
AC_CHECK_LIB(m, sqrt)
AC_CHECK_FUNCS([cbrt])