diff options
author | Simon McVittie <smcv@collabora.com> | 2023-06-29 17:51:48 +0100 |
---|---|---|
committer | Simon McVittie <smcv@collabora.com> | 2023-08-21 13:49:31 +0000 |
commit | 6f6f861a3a593e959d23e05eacfc1307c713dc57 (patch) | |
tree | 13a203702478807085370cc52b35d2a328ac4e24 | |
parent | 8de818153b6d75f6d5592949a6bf3d9d711bcfa4 (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.c | 18 |
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; } /** @} */ |