diff options
author | 2010-02-03 19:34:33 +0000 | |
---|---|---|
committer | 2010-02-03 19:34:33 +0000 | |
commit | 625b7b7d70f03e571f836d1632253dd3de0ca442 (patch) | |
tree | a3eaba67769ea7802df7871ee45219354b16523f /sys-apps/dbus/files | |
parent | Automated update of use.local.desc (diff) | |
download | historical-625b7b7d70f03e571f836d1632253dd3de0ca442.tar.gz historical-625b7b7d70f03e571f836d1632253dd3de0ca442.tar.bz2 historical-625b7b7d70f03e571f836d1632253dd3de0ca442.zip |
New upstream release, includes the 2 patches we had applied to 1.2.18.
Package-Manager: portage-2.1.7.17/cvs/Linux i686
Diffstat (limited to 'sys-apps/dbus/files')
-rw-r--r-- | sys-apps/dbus/files/0001-Fix-inotify-shutdown.patch | 195 | ||||
-rw-r--r-- | sys-apps/dbus/files/0002-Fix-compilation-in-disable-selinux-case.patch | 182 |
2 files changed, 0 insertions, 377 deletions
diff --git a/sys-apps/dbus/files/0001-Fix-inotify-shutdown.patch b/sys-apps/dbus/files/0001-Fix-inotify-shutdown.patch deleted file mode 100644 index 862adb28a413..000000000000 --- a/sys-apps/dbus/files/0001-Fix-inotify-shutdown.patch +++ /dev/null @@ -1,195 +0,0 @@ -From 90fe96b1875350f86a4a773d4a0a22009950dd4d Mon Sep 17 00:00:00 2001 -From: Colin Walters <walters@verbum.org> -Date: Tue, 2 Feb 2010 12:37:17 -0500 -Subject: [PATCH 1/2] Fix inotify shutdown - -We were incorrectly passing NULL for a DBusList when the usage expected -is a pointer to a NULL DBusList pointer. Also during dbus_shutdown -we need to actually close the inotify fd, and remove our watch. - -Move the shutdown handler out of bus.c and into inotify where we -can do all of this cleanly. ---- - bus/bus.c | 8 --- - bus/dir-watch-inotify.c | 128 ++++++++++++++++++++++++++++++----------------- - 2 files changed, 82 insertions(+), 54 deletions(-) - -diff --git a/bus/bus.c b/bus/bus.c -index bfd398e..8150df2 100644 ---- a/bus/bus.c -+++ b/bus/bus.c -@@ -551,12 +551,6 @@ process_config_postinit (BusContext *context, - return TRUE; - } - --static void --bus_shutdown_all_directory_watches (void *data) --{ -- bus_set_watched_dirs ((BusContext *) data, NULL); --} -- - BusContext* - bus_context_new (const DBusString *config_file, - ForceForkSetting force_fork, -@@ -588,8 +582,6 @@ bus_context_new (const DBusString *config_file, - - _dbus_generate_uuid (&context->uuid); - -- _dbus_register_shutdown_func (bus_shutdown_all_directory_watches, context); -- - if (!_dbus_string_copy_data (config_file, &context->config_file)) - { - BUS_SET_OOM (error); -diff --git a/bus/dir-watch-inotify.c b/bus/dir-watch-inotify.c -index f87a634..bb71394 100644 ---- a/bus/dir-watch-inotify.c -+++ b/bus/dir-watch-inotify.c -@@ -92,59 +92,16 @@ _handle_inotify_watch (DBusWatch *passed_watch, unsigned int flags, void *data) - return TRUE; - } - --static int --_init_inotify (BusContext *context) --{ -- int ret = 0; -- -- if (inotify_fd == -1) { --#ifdef HAVE_INOTIFY_INIT1 -- inotify_fd = inotify_init1 (IN_CLOEXEC); --#else -- inotify_fd = inotify_init (); --#endif -- if (inotify_fd <= 0) { -- _dbus_warn ("Cannot initialize inotify\n"); -- goto out; -- } -- loop = bus_context_get_loop (context); -- -- watch = _dbus_watch_new (inotify_fd, DBUS_WATCH_READABLE, TRUE, -- _handle_inotify_watch, NULL, NULL); -- -- if (watch == NULL) -- { -- _dbus_warn ("Unable to create inotify watch\n"); -- goto out; -- } -- -- if (!_dbus_loop_add_watch (loop, watch, _inotify_watch_callback, -- NULL, NULL)) -- { -- _dbus_warn ("Unable to add reload watch to main loop"); -- _dbus_watch_unref (watch); -- watch = NULL; -- goto out; -- } -- } -+#include <stdio.h> - -- ret = 1; -- --out: -- return ret; --} -- --void --bus_set_watched_dirs (BusContext *context, DBusList **directories) -+static void -+_set_watched_dirs_internal (DBusList **directories) - { - int new_wds[MAX_DIRS_TO_WATCH]; - char *new_dirs[MAX_DIRS_TO_WATCH]; - DBusList *link; - int i, j, wd; - -- if (!_init_inotify (context)) -- goto out; -- - for (i = 0; i < MAX_DIRS_TO_WATCH; i++) - { - new_wds[i] = -1; -@@ -226,3 +183,82 @@ bus_set_watched_dirs (BusContext *context, DBusList **directories) - - out:; - } -+ -+#include <stdio.h> -+static void -+_shutdown_inotify (void *data) -+{ -+ DBusList *empty = NULL; -+ -+ if (inotify_fd == -1) -+ return; -+ -+ _set_watched_dirs_internal (&empty); -+ -+ close (inotify_fd); -+ inotify_fd = -1; -+ if (watch != NULL) -+ { -+ _dbus_loop_remove_watch (loop, watch, _inotify_watch_callback, NULL); -+ _dbus_watch_unref (watch); -+ _dbus_loop_unref (loop); -+ } -+ watch = NULL; -+ loop = NULL; -+} -+ -+static int -+_init_inotify (BusContext *context) -+{ -+ int ret = 0; -+ -+ if (inotify_fd == -1) -+ { -+#ifdef HAVE_INOTIFY_INIT1 -+ inotify_fd = inotify_init1 (IN_CLOEXEC); -+#else -+ inotify_fd = inotify_init (); -+#endif -+ if (inotify_fd <= 0) -+ { -+ _dbus_warn ("Cannot initialize inotify\n"); -+ goto out; -+ } -+ loop = bus_context_get_loop (context); -+ _dbus_loop_ref (loop); -+ -+ watch = _dbus_watch_new (inotify_fd, DBUS_WATCH_READABLE, TRUE, -+ _handle_inotify_watch, NULL, NULL); -+ -+ if (watch == NULL) -+ { -+ _dbus_warn ("Unable to create inotify watch\n"); -+ goto out; -+ } -+ -+ if (!_dbus_loop_add_watch (loop, watch, _inotify_watch_callback, -+ NULL, NULL)) -+ { -+ _dbus_warn ("Unable to add reload watch to main loop"); -+ _dbus_watch_unref (watch); -+ watch = NULL; -+ goto out; -+ } -+ -+ _dbus_register_shutdown_func (_shutdown_inotify, NULL); -+ } -+ -+ ret = 1; -+ -+out: -+ return ret; -+} -+ -+void -+bus_set_watched_dirs (BusContext *context, DBusList **directories) -+{ -+ if (!_init_inotify (context)) -+ return; -+ -+ _set_watched_dirs_internal (directories); -+} --- -1.6.2.5 - diff --git a/sys-apps/dbus/files/0002-Fix-compilation-in-disable-selinux-case.patch b/sys-apps/dbus/files/0002-Fix-compilation-in-disable-selinux-case.patch deleted file mode 100644 index a0f6e47b841e..000000000000 --- a/sys-apps/dbus/files/0002-Fix-compilation-in-disable-selinux-case.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 3dac125d61ebc4f614a1723580043e2f1c811f59 Mon Sep 17 00:00:00 2001 -From: Colin Walters <walters@verbum.org> -Date: Tue, 2 Feb 2010 14:57:47 -0500 -Subject: [PATCH 2/2] 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. ---- - bus/selinux.c | 35 ++--------------------- - bus/selinux.h | 2 - - dbus/dbus-sysdeps-util-unix.c | 62 +++++++++++++++++++++++++++++++++++++++++ - dbus/dbus-sysdeps.h | 3 ++ - 4 files changed, 68 insertions(+), 34 deletions(-) - -diff --git a/bus/selinux.c b/bus/selinux.c -index 456723a..e61efc5 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 - -diff --git a/bus/selinux.h b/bus/selinux.h -index f208fbe..3bab36d 100644 ---- a/bus/selinux.h -+++ b/bus/selinux.h -@@ -68,7 +68,5 @@ BusSELinuxID* bus_selinux_init_connection_id (DBusConnection *connection, - - - void bus_selinux_audit_init(void); --dbus_bool_t _dbus_change_to_daemon_user (const char *user, -- DBusError *error); - - #endif /* BUS_SELINUX_H */ -diff --git a/dbus/dbus-sysdeps-util-unix.c b/dbus/dbus-sysdeps-util-unix.c -index 27cdbb0..74e8d88 100644 ---- a/dbus/dbus-sysdeps-util-unix.c -+++ b/dbus/dbus-sysdeps-util-unix.c -@@ -303,6 +303,68 @@ _dbus_verify_daemon_user (const char *user) - return _dbus_get_user_id_and_primary_group (&u, NULL, NULL); - } - -+ -+/* The HAVE_LIBAUDIT case lives in selinux.c */ -+#ifndef HAVE_LIBAUDIT -+/** -+ * Changes the user and group the bus is running as. -+ * -+ * @param user the user to become -+ * @param error return location for errors -+ * @returns #FALSE on failure -+ */ -+dbus_bool_t -+_dbus_change_to_daemon_user (const char *user, -+ DBusError *error) -+{ -+ dbus_uid_t uid; -+ dbus_gid_t gid; -+ DBusString u; -+ -+ _dbus_string_init_const (&u, user); -+ -+ if (!_dbus_get_user_id_and_primary_group (&u, &uid, &gid)) -+ { -+ dbus_set_error (error, DBUS_ERROR_FAILED, -+ "User '%s' does not appear to exist?", -+ user); -+ return FALSE; -+ } -+ -+ /* 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; -+ } -+ -+ return TRUE; -+} -+#endif /* !HAVE_LIBAUDIT */ -+ - void - _dbus_init_system_log (void) - { -diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h -index b154f01..80f0ba2 100644 ---- a/dbus/dbus-sysdeps.h -+++ b/dbus/dbus-sysdeps.h -@@ -512,6 +512,9 @@ unsigned long _dbus_pid_for_log (void); - */ - dbus_pid_t _dbus_getpid (void); - -+dbus_bool_t _dbus_change_to_daemon_user (const char *user, -+ DBusError *error); -+ - void _dbus_flush_caches (void); - - /** @} */ --- -1.6.2.5 - |