From: David Tardon Date: Thu, 3 Mar 2022 14:58:24 +0000 (+0100) Subject: devnode-acl: use _cleanup_ to free acl_t X-Git-Tag: v251-rc1~204 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=203ea2c8f158288fea56c5be980715b2b7e002fe;p=thirdparty%2Fsystemd.git devnode-acl: use _cleanup_ to free acl_t --- diff --git a/src/shared/devnode-acl.c b/src/shared/devnode-acl.c index 89ff566832b..d2b78f392a8 100644 --- a/src/shared/devnode-acl.c +++ b/src/shared/devnode-acl.c @@ -52,8 +52,8 @@ int devnode_acl(const char *path, bool del, uid_t old_uid, bool add, uid_t new_uid) { - acl_t acl; - int r = 0; + _cleanup_(acl_freep) acl_t acl = NULL; + int r; bool changed = false; assert(path); @@ -66,7 +66,7 @@ int devnode_acl(const char *path, r = flush_acl(acl); if (r < 0) - goto finish; + return r; if (r > 0) changed = true; @@ -75,13 +75,11 @@ int devnode_acl(const char *path, r = acl_find_uid(acl, old_uid, &entry); if (r < 0) - goto finish; + return r; if (r > 0) { - if (acl_delete_entry(acl, entry) < 0) { - r = -errno; - goto finish; - } + if (acl_delete_entry(acl, entry) < 0) + return -errno; changed = true; } @@ -94,68 +92,47 @@ int devnode_acl(const char *path, r = acl_find_uid(acl, new_uid, &entry); if (r < 0) - goto finish; + return r; if (r == 0) { - if (acl_create_entry(&acl, &entry) < 0) { - r = -errno; - goto finish; - } + if (acl_create_entry(&acl, &entry) < 0) + return -errno; if (acl_set_tag_type(entry, ACL_USER) < 0 || - acl_set_qualifier(entry, &new_uid) < 0) { - r = -errno; - goto finish; - } + acl_set_qualifier(entry, &new_uid) < 0) + return -errno; } - if (acl_get_permset(entry, &permset) < 0) { - r = -errno; - goto finish; - } + if (acl_get_permset(entry, &permset) < 0) + return -errno; rd = acl_get_perm(permset, ACL_READ); - if (rd < 0) { - r = -errno; - goto finish; - } + if (rd < 0) + return -errno; wt = acl_get_perm(permset, ACL_WRITE); - if (wt < 0) { - r = -errno; - goto finish; - } + if (wt < 0) + return -errno; if (!rd || !wt) { - if (acl_add_perm(permset, ACL_READ|ACL_WRITE) < 0) { - r = -errno; - goto finish; - } + if (acl_add_perm(permset, ACL_READ|ACL_WRITE) < 0) + return -errno; changed = true; } } if (!changed) - goto finish; - - if (acl_calc_mask(&acl) < 0) { - r = -errno; - goto finish; - } - - if (acl_set_file(path, ACL_TYPE_ACCESS, acl) < 0) { - r = -errno; - goto finish; - } + return 0; - r = 0; + if (acl_calc_mask(&acl) < 0) + return -errno; -finish: - acl_free(acl); + if (acl_set_file(path, ACL_TYPE_ACCESS, acl) < 0) + return -errno; - return r; + return 0; } int devnode_acl_all(const char *seat,