The intent for the platform check for SU is to use "su -m" for BSD-like systems. The compiler already provide defines for such systems.
Better alternatives are to perform a feature check on the behavior of "su", or to change code in xdm-config to setuid. For the time being, this patch will reduce maintenance by replacing the large case statement and the Automake variable with an existing one liner of defines. Signed-off-by: Gaetan Nadon <mems...@videotron.ca> --- Seconnd edition. Commit text modified to indicate the patch is done in the hope of reducing configuration complexity and maintenance and not for promoting one solution over another. config/Makefile.am | 2 +- config/xdm-config.cpp | 7 ++++++- configure.ac | 24 ------------------------ 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/config/Makefile.am b/config/Makefile.am index d13645f..c3d837f 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -54,7 +54,7 @@ CPP_FILES_FLAGS = -DBINDIR="$(bindir)" -DDEFAULTVT="$(DEFAULTVT)" \ -DXDMDIR="$(XDMLIBDIR)" -DXDMLOGDIR="$(XDMLOGDIR)" \ -DXDMXAUTHDIR="$(XDMXAUTHDIR)" \ -DXDMPIDDIR="$(XDMPIDDIR)" -DXDMCONFIGDIR="$(XDMCONFIGDIR)" \ - -DXDMSCRIPTDIR="$(XDMSCRIPTDIR)" -DSU="$(SU)" \ + -DXDMSCRIPTDIR="$(XDMSCRIPTDIR)" \ -DCHOOSERPATH="$(XDMLIBDIR)/chooser" $(XPMDEFINES) \ -DSHELL_CMD="$(SHELL_CMD)" $(MKTEMP_DEFINES) diff --git a/config/xdm-config.cpp b/config/xdm-config.cpp index 59d548b..81a5931 100644 --- a/config/xdm-config.cpp +++ b/config/xdm-config.cpp @@ -16,7 +16,12 @@ DisplayManager.keyFile: XDMCONFIGDIR/xdm-keys DisplayManager.servers: XDMCONFIGDIR/Xservers DisplayManager.accessFile: XDMCONFIGDIR/Xaccess DisplayManager*resources: XDMCONFIGDIR/Xresources -DisplayManager.willing: SU nobody -c XDMSCRIPTDIR/Xwilling +# if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) \ + || defined(__APPLE__) || defined(__DragonFly__) +DisplayManager.willing: su -m nobody -c XDMSCRIPTDIR/Xwilling +#else +DisplayManager.willing: su nobody -c XDMSCRIPTDIR/Xwilling +#endif ! All displays should use authorization, but we cannot be sure ! X terminals may not be configured that way, so they will require ! individual resource settings. diff --git a/configure.ac b/configure.ac index 53793a1..69f251c 100644 --- a/configure.ac +++ b/configure.ac @@ -145,30 +145,6 @@ if test "x$USE_SELINUX" != "xno" ; then LIBS="$old_LIBS" fi -# FIXME: Find better test for which OS'es use su -m - for now, just try to -# mirror the Imakefile setting of: -# if defined(OpenBSDArchitecture) || defined(NetBSDArchitecture) || defined(FreeBSDArchitecture) || defined(DarwinArchitecture) - - -case $host_os in - linux*|gnu*|*-gnu) - SU="su" - ;; - darwin*) - SU="su -m" - ;; - *bsd*|dragonfly*) - SU="su -m" - ;; - solaris*|sysv4*) - SU="su" - ;; - *) - SU="su" - ;; -esac -AC_SUBST(SU) - # Check for /dev/random or /dev/urandom AC_ARG_WITH(random-device, AC_HELP_STRING([--with-random-device\[=<pathname>\]], -- 1.6.0.4 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel