]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
bus: raise fd limits before dropping privs
authorDavid King <dking@redhat.com>
Wed, 7 Feb 2018 14:37:24 +0000 (14:37 +0000)
committerSimon McVittie <smcv@collabora.com>
Tue, 20 Feb 2018 17:40:01 +0000 (17:40 +0000)
Startup ordering was changed in #92832 to ensure that SELinux audit
messages could be sent. As a side effect, the raising of file descriptor
limits was moved to after the dropping of root privileges, resulting in
the limit change always failing.

Move the raise_file_descriptor_limit() call to ensure that it is called
before dropping root privileges.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=105165
Bug-RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=1529044
[smcv: Call raise_file_descriptor_limit() even if !context->user]
Reviewed-by: Simon McVittie <smcv@collabora.com>
bus/bus.c

index a6f8db475dc6840faf229e42d2af20eb075b771f..abb2ea2f8752ee8c3fbafd68417aaff7d74192fc 100644 (file)
--- a/bus/bus.c
+++ b/bus/bus.c
@@ -738,8 +738,6 @@ process_config_postinit (BusContext      *context,
   DBusHashTable *service_context_table;
   DBusList *watched_dirs = NULL;
 
-  raise_file_descriptor_limit (context);
-
   service_context_table = bus_config_parser_steal_service_context_table (parser);
   if (!bus_registry_set_service_context_table (context->registry,
                                               service_context_table))
@@ -971,6 +969,11 @@ bus_context_new (const DBusString *config_file,
       !_dbus_pipe_is_stdout_or_stderr (print_pid_pipe))
     _dbus_pipe_close (print_pid_pipe, NULL);
 
+  /* Raise the file descriptor limits before dropping the privileges
+   * required to do so.
+   */
+  raise_file_descriptor_limit (context);
+
   /* Here we change our credentials if required,
    * as soon as we've set up our sockets and pidfile.
    * This must be done before initializing LSMs, so that the netlink