From 79b1e9966434bc3ca4b6009c19c77b91e7588180 Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Fri, 18 Aug 2006 20:24:56 +0000 Subject: * Released 0.92 * dbus/dbus-threads.c (dbus_threads_init): change the documentation to reflect the init late change * bus/bus.c (bus_context_new): Check user before we fork so we can print out an error message a user will be able to see --- bus/bus.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'bus/bus.c') diff --git a/bus/bus.c b/bus/bus.c index 5df7864b..e6f36b14 100644 --- a/bus/bus.c +++ b/bus/bus.c @@ -531,7 +531,8 @@ bus_context_new (const DBusString *config_file, { BusContext *context; BusConfigParser *parser; - + DBusCredentials creds; + _DBUS_ASSERT_ERROR_IS_CLEAR (error); context = NULL; @@ -657,7 +658,25 @@ bus_context_new (const DBusString *config_file, BUS_SET_OOM (error); goto failed; } - + + /* check user before we fork */ + if (context->user != NULL) + { + DBusString u; + + _dbus_string_init_const (&u, context->user); + + if (!_dbus_credentials_from_username (&u, &creds) || + creds.uid < 0 || + creds.gid < 0) + { + dbus_set_error (error, DBUS_ERROR_FAILED, + "Could not get UID and GID for username \"%s\"", + context->user); + goto failed; + } + } + /* Now become a daemon if appropriate */ if ((force_fork != FORK_NEVER && context->fork) || force_fork == FORK_ALWAYS) { @@ -749,21 +768,6 @@ bus_context_new (const DBusString *config_file, */ if (context->user != NULL) { - DBusCredentials creds; - DBusString u; - - _dbus_string_init_const (&u, context->user); - - if (!_dbus_credentials_from_username (&u, &creds) || - creds.uid < 0 || - creds.gid < 0) - { - dbus_set_error (error, DBUS_ERROR_FAILED, - "Could not get UID and GID for username \"%s\"", - context->user); - goto failed; - } - if (!_dbus_change_identity (creds.uid, creds.gid, error)) { _DBUS_ASSERT_ERROR_IS_SET (error); -- cgit