{
DBusUserDatabase *db;
const DBusUserInfo *info;
+ dbus_bool_t ret = FALSE;
+
*group_ids = NULL;
*n_group_ids = 0;
if (db == NULL)
{
_DBUS_SET_OOM (error);
- _dbus_user_database_unlock_system ();
- return FALSE;
+ goto out;
}
if (!_dbus_user_database_get_uid (db, uid, &info, error))
- {
- _dbus_user_database_unlock_system ();
- return FALSE;
- }
+ goto out;
_dbus_assert (info->uid == uid);
if (*group_ids == NULL)
{
_DBUS_SET_OOM (error);
- _dbus_user_database_unlock_system ();
- return FALSE;
+ goto out;
}
*n_group_ids = info->n_group_ids;
memcpy (*group_ids, info->group_ids, info->n_group_ids * sizeof (dbus_gid_t));
}
+ ret = TRUE;
+out:
+ _DBUS_ASSERT_ERROR_XOR_BOOL (error, ret);
_dbus_user_database_unlock_system ();
- return TRUE;
+ return ret;
}
/** @} */