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>]]) | ||||
| 
 | ||||
| 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]) | ||||
|  |  | |||
|  | @ -518,4 +518,7 @@ | |||
| /* Listen on local socket */ | ||||
| #undef LISTEN_LOCAL | ||||
| 
 | ||||
| /* Define if no local socket credentials interface exists */ | ||||
| #undef NO_LOCAL_CLIENT_CRED | ||||
| 
 | ||||
| #endif /* _DIX_CONFIG_H_ */ | ||||
|  |  | |||
|  | @ -1221,7 +1221,6 @@ GetLocalClientCreds(ClientPtr client, LocalClientCredRec ** lccp) | |||
| #endif | ||||
| #else | ||||
|     /* No system call available to get the credentials of the peer */ | ||||
| #define NO_LOCAL_CLIENT_CRED | ||||
|     return -1; | ||||
| #endif | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue