NULL, 1, "valid-config-files/as-another-user.conf",
/* We start the dbus-daemon as root and drop privileges, like the
* real system bus does */
- TEST_USER_ROOT, SPECIFY_ADDRESS
+ TEST_USER_ROOT_DROP_TO_MESSAGEBUS, SPECIFY_ADDRESS
};
#ifdef ENABLE_TRADITIONAL_ACTIVATION
case TEST_USER_ROOT:
break;
+ case TEST_USER_ROOT_DROP_TO_MESSAGEBUS:
case TEST_USER_MESSAGEBUS:
pwd = getpwnam (DBUS_USER);
return NULL;
}
+ if (user == TEST_USER_ROOT_DROP_TO_MESSAGEBUS)
+ {
+ /* Let the dbus-daemon start as root and drop privileges
+ * itself */
+ pwd = NULL;
+ }
+
break;
case TEST_USER_OTHER:
username = DBUS_TEST_USER;
break;
+ /* TEST_USER_ROOT_DROP_TO_MESSAGEBUS is only meaningful for
+ * test_get_dbus_daemon(), not as a client */
+ case TEST_USER_ROOT_DROP_TO_MESSAGEBUS:
+ g_return_val_if_reached (FALSE);
+
case TEST_USER_ME:
default:
g_return_val_if_reached (FALSE);
"credentials-passing semantics on this platform");
return FALSE;
+ /* TEST_USER_ROOT_DROP_TO_MESSAGEBUS is only meaningful for
+ * test_get_dbus_daemon(), not as a client */
+ case TEST_USER_ROOT_DROP_TO_MESSAGEBUS:
+ g_return_val_if_reached (FALSE);
+
case TEST_USER_ME:
default:
g_return_val_if_reached (FALSE);
* be run as an arbitrary non-root user, as above.
*
* Certain tests can usefully be run again, as root. When this is done,
- * tests using TEST_USER_ROOT, TEST_USER_MESSAGEBUS and/or TEST_USER_OTHER
- * can exercise situations that only arise when there's more than one uid.
+ * tests using a TestUser other than TEST_USER_ME can exercise situations
+ * that only arise when there's more than one uid.
*/
typedef enum {
/* Whatever user happens to be running the regression test;
* from configure.ac, usually 'messagebus' but perhaps 'dbus' or
* '_dbus'. */
TEST_USER_MESSAGEBUS,
+ /* Run as uid 0, expecting to drop privileges to the user who would
+ * normally run the system bus (so we must skip the test if that user
+ * doesn't exist). Only valid for test_get_dbus_daemon(), not for
+ * test_connect_to_bus_as_user(). */
+ TEST_USER_ROOT_DROP_TO_MESSAGEBUS,
/* An unprivileged user who is neither root nor DBUS_USER.
* This is DBUS_TEST_USER from configure.ac, usually 'nobody'. */
TEST_USER_OTHER