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>
This commit is contained in:
parent
f8a2c087c8
commit
cdd1d58159
18
configure.ac
18
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>]])
|
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.
|
dnl Find the math libary, then check for cbrt function in it.
|
||||||
AC_CHECK_LIB(m, sqrt)
|
AC_CHECK_LIB(m, sqrt)
|
||||||
AC_CHECK_FUNCS([cbrt])
|
AC_CHECK_FUNCS([cbrt])
|
||||||
|
|
|
@ -518,4 +518,7 @@
|
||||||
/* Listen on local socket */
|
/* Listen on local socket */
|
||||||
#undef LISTEN_LOCAL
|
#undef LISTEN_LOCAL
|
||||||
|
|
||||||
|
/* Define if no local socket credentials interface exists */
|
||||||
|
#undef NO_LOCAL_CLIENT_CRED
|
||||||
|
|
||||||
#endif /* _DIX_CONFIG_H_ */
|
#endif /* _DIX_CONFIG_H_ */
|
||||||
|
|
|
@ -1221,7 +1221,6 @@ GetLocalClientCreds(ClientPtr client, LocalClientCredRec ** lccp)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
/* No system call available to get the credentials of the peer */
|
/* No system call available to get the credentials of the peer */
|
||||||
#define NO_LOCAL_CLIENT_CRED
|
|
||||||
return -1;
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue