summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2023-06-29 17:51:48 +0100
committerSimon McVittie <smcv@collabora.com>2023-08-21 13:49:31 +0000
commit6f6f861a3a593e959d23e05eacfc1307c713dc57 (patch)
tree13a203702478807085370cc52b35d2a328ac4e24
parent8de818153b6d75f6d5592949a6bf3d9d711bcfa4 (diff)
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>
-rw-r--r--dbus/dbus-userdb-util.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/dbus/dbus-userdb-util.c b/dbus/dbus-userdb-util.c
index 558acff1..73624495 100644
--- a/dbus/dbus-userdb-util.c
+++ b/dbus/dbus-userdb-util.c
@@ -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;
}
/** @} */