unsigned long gid,
DBusError *error)
{
- if (setuid (uid) < 0)
+ /* 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 UID to %lu: %s", uid,
+ "Failed to set GID to %lu: %s", gid,
_dbus_strerror (errno));
return FALSE;
}
-
- if (setgid (gid) < 0)
+
+ if (setuid (uid) < 0)
{
dbus_set_error (error, _dbus_error_from_errno (errno),
- "Failed to set GID to %lu: %s", gid,
+ "Failed to set UID to %lu: %s", uid,
_dbus_strerror (errno));
return FALSE;
}