diff options
author | Colin Walters <walters@verbum.org> | 2010-02-02 14:57:47 -0500 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2010-02-02 15:04:58 -0500 |
commit | 3dac125d61ebc4f614a1723580043e2f1c811f59 (patch) | |
tree | 4318cee650e9bebdba9e3f322f58680402033e79 /bus/selinux.c | |
parent | 90fe96b1875350f86a4a773d4a0a22009950dd4d (diff) | |
download | dbus-3dac125d61ebc4f614a1723580043e2f1c811f59.tar.gz |
Fix compilation in --disable-selinux case
_dbus_change_to_daemon_user moved into selinux.c for the --with-selinux
(and audit) case because that's where all of the relevant libcap headers
were being used. However in the --disable-selinux case this didn't
compile and wasn't very clean.
If we don't have libaudit, use the legacy direct setgid/setuid bits
we had before in dbus-sysdeps-util-unix.c.
Diffstat (limited to 'bus/selinux.c')
-rw-r--r-- | bus/selinux.c | 35 |
1 files changed, 3 insertions, 32 deletions
diff --git a/bus/selinux.c b/bus/selinux.c index 456723ac..e61efc5d 100644 --- a/bus/selinux.c +++ b/bus/selinux.c @@ -1017,6 +1017,8 @@ bus_selinux_shutdown (void) #endif /* HAVE_SELINUX */ } +/* The !HAVE_LIBAUDIT case lives in dbus-sysdeps-util-unix.c */ +#ifdef HAVE_LIBAUDIT /** * Changes the user and group the bus is running as. * @@ -1042,7 +1044,6 @@ _dbus_change_to_daemon_user (const char *user, return FALSE; } -#ifdef HAVE_LIBAUDIT /* If we were root */ if (_dbus_geteuid () == 0) { @@ -1083,38 +1084,8 @@ _dbus_change_to_daemon_user (const char *user, return FALSE; } } -#else - /* setgroups() only works if we are a privileged process, - * so we don't return error on failure; the only possible - * failure is that we don't have perms to do it. - * - * not sure this is right, maybe if setuid() - * is going to work then setgroups() should also work. - */ - if (setgroups (0, NULL) < 0) - _dbus_warn ("Failed to drop supplementary groups: %s\n", - _dbus_strerror (errno)); - - /* Set GID first, or the setuid may remove our permission - * to change the GID - */ - if (setgid (gid) < 0) - { - dbus_set_error (error, _dbus_error_from_errno (errno), - "Failed to set GID to %lu: %s", gid, - _dbus_strerror (errno)); - return FALSE; - } - - if (setuid (uid) < 0) - { - dbus_set_error (error, _dbus_error_from_errno (errno), - "Failed to set UID to %lu: %s", uid, - _dbus_strerror (errno)); - return FALSE; - } -#endif /* !HAVE_LIBAUDIT */ return TRUE; } +#endif |