mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-09 07:18:03 +02:00
userdb: Use "goto out" pattern for _dbus_groups_from_uid()
This makes it easier to verify that _dbus_user_database_unlock_system() is called on all exit paths. The only early-return is when locking the userdb failed. Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
8de818153b
commit
6f6f861a3a
1 changed files with 9 additions and 9 deletions
|
|
@ -353,6 +353,8 @@ _dbus_groups_from_uid (dbus_uid_t uid,
|
|||
{
|
||||
DBusUserDatabase *db;
|
||||
const DBusUserInfo *info;
|
||||
dbus_bool_t ret = FALSE;
|
||||
|
||||
*group_ids = NULL;
|
||||
*n_group_ids = 0;
|
||||
|
||||
|
|
@ -366,15 +368,11 @@ _dbus_groups_from_uid (dbus_uid_t uid,
|
|||
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);
|
||||
|
||||
|
|
@ -384,8 +382,7 @@ _dbus_groups_from_uid (dbus_uid_t 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;
|
||||
|
|
@ -393,7 +390,10 @@ _dbus_groups_from_uid (dbus_uid_t uid,
|
|||
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;
|
||||
}
|
||||
/** @} */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue