Skip to content

Commit

Permalink
acl-plugin: Adjust to API changes
Browse files Browse the repository at this point in the history
  • Loading branch information
cmouse authored and GitLab committed Sep 8, 2016
1 parent a480462 commit c7f6992
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/plugins/acl/acl-backend-vfile-acllist.c
Expand Up @@ -184,11 +184,11 @@ acllist_append(struct acl_backend_vfile *backend, struct ostream *output,
aclobj = acl_object_init_from_name(&backend->backend, name);

iter = acl_object_list_init(aclobj);
while ((ret = acl_object_list_next(iter, &rights)) > 0) {
while (acl_object_list_next(iter, &rights)) {
if (acl_rights_has_nonowner_lookup_changes(&rights))
break;
}
acl_object_list_deinit(&iter);
ret = acl_object_list_deinit(&iter);

if (acl_backend_vfile_object_get_mtime(aclobj, &acllist.mtime) < 0)
ret = -1;
Expand Down
14 changes: 6 additions & 8 deletions src/plugins/acl/acl-lookup-dict.c
Expand Up @@ -111,7 +111,7 @@ static int acl_lookup_dict_rebuild_add_backend(struct mail_namespace *ns,
struct acl_rights rights;
const char *name, *id_dup;
string_t *id;
int ret, ret2 = 0;
int ret = 0;

if ((ns->flags & NAMESPACE_FLAG_NOACL) != 0 || ns->owner == NULL ||
ACL_LIST_CONTEXT(ns->list) == NULL)
Expand All @@ -120,11 +120,11 @@ static int acl_lookup_dict_rebuild_add_backend(struct mail_namespace *ns,
id = t_str_new(128);
backend = acl_mailbox_list_get_backend(ns->list);
ctx = acl_backend_nonowner_lookups_iter_init(backend);
while ((ret = acl_backend_nonowner_lookups_iter_next(ctx, &name)) > 0) {
while (acl_backend_nonowner_lookups_iter_next(ctx, &name)) {
aclobj = acl_object_init_from_name(backend, name);

iter = acl_object_list_init(aclobj);
while ((ret = acl_object_list_next(iter, &rights)) > 0) {
while (acl_object_list_next(iter, &rights)) {
/* avoid pointless user -> user entries,
which some clients do */
if (acl_rights_has_nonowner_lookup_changes(&rights) &&
Expand All @@ -137,13 +137,11 @@ static int acl_lookup_dict_rebuild_add_backend(struct mail_namespace *ns,
array_append(ids, &id_dup, 1);
}
}
acl_object_list_deinit(&iter);
if (ret < 0)
ret2 = -1;
if (acl_object_list_deinit(&iter) < 0) ret = -1;
acl_object_deinit(&aclobj);
}
acl_backend_nonowner_lookups_iter_deinit(&ctx);
return ret < 0 || ret2 < 0 ? -1 : 0;
if (acl_backend_nonowner_lookups_iter_deinit(&ctx) < 0) ret = -1;
return ret;
}

static int
Expand Down
8 changes: 3 additions & 5 deletions src/plugins/acl/acl-mailbox-list.c
Expand Up @@ -90,7 +90,6 @@ acl_mailbox_try_list_fast(struct acl_mailbox_list_iterate_context *ctx)
struct mail_namespace *ns = ctx->ctx.list->ns;
struct mailbox_list_iter_update_context update_ctx;
const char *name;
int ret;

if ((ctx->ctx.flags & (MAILBOX_LIST_ITER_RAW_LIST |
MAILBOX_LIST_ITER_SELECT_SUBSCRIBED)) != 0)
Expand Down Expand Up @@ -120,17 +119,16 @@ acl_mailbox_try_list_fast(struct acl_mailbox_list_iterate_context *ctx)
update_ctx.tree_ctx = mailbox_tree_init(ctx->sep);

nonowner_list_ctx = acl_backend_nonowner_lookups_iter_init(backend);
while ((ret = acl_backend_nonowner_lookups_iter_next(nonowner_list_ctx,
&name)) > 0) {
while (acl_backend_nonowner_lookups_iter_next(nonowner_list_ctx,
&name)) {
T_BEGIN {
const char *vname =
mailbox_list_get_vname(ns->list, name);
mailbox_list_iter_update(&update_ctx, vname);
} T_END;
}
acl_backend_nonowner_lookups_iter_deinit(&nonowner_list_ctx);

if (ret == 0)
if (acl_backend_nonowner_lookups_iter_deinit(&nonowner_list_ctx) == 0)
ctx->lookup_boxes = update_ctx.tree_ctx;
else
mailbox_tree_deinit(&update_ctx.tree_ctx);
Expand Down
9 changes: 4 additions & 5 deletions src/plugins/acl/acl-mailbox.c
Expand Up @@ -102,11 +102,12 @@ static void acl_mailbox_copy_acls_from_parent(struct mailbox *box)
parent_aclobj = acl_object_init_from_parent(alist->rights.backend,
box->name);
iter = acl_object_list_init(parent_aclobj);
while (acl_object_list_next(iter, &update.rights) > 0) {
while (acl_object_list_next(iter, &update.rights)) {
/* don't copy global ACL rights. */
if (!update.rights.global)
(void)acl_object_update(abox->aclobj, &update);
}
/* FIXME: Add error handling */
acl_object_list_deinit(&iter);
acl_object_deinit(&parent_aclobj);
}
Expand Down Expand Up @@ -622,7 +623,6 @@ acl_mailbox_update_removed_id(struct acl_object *aclobj,
{
struct acl_object_list_iter *iter;
struct acl_rights rights;
int ret;

if (update->modify_mode != ACL_MODIFY_MODE_CLEAR &&
update->neg_modify_mode != ACL_MODIFY_MODE_CLEAR)
Expand All @@ -633,13 +633,12 @@ acl_mailbox_update_removed_id(struct acl_object *aclobj,

/* mixed clear/non-clear. see if the identifier exists anymore */
iter = acl_object_list_init(aclobj);
while ((ret = acl_object_list_next(iter, &rights)) > 0) {
while (acl_object_list_next(iter, &rights)) {
if (rights.id_type == update->rights.id_type &&
null_strcmp(rights.identifier, update->rights.identifier) == 0)
break;
}
acl_object_list_deinit(&iter);
return ret == 0;
return acl_object_list_deinit(&iter) == 0;
}

int acl_mailbox_update_acl(struct mailbox_transaction_context *t,
Expand Down
8 changes: 4 additions & 4 deletions src/plugins/imap-acl/imap-acl-plugin.c
Expand Up @@ -190,15 +190,15 @@ static bool have_positive_owner_rights(struct acl_backend *backend,
bool ret = FALSE;

iter = acl_object_list_init(aclobj);
while (acl_object_list_next(iter, &rights) > 0) {
while (acl_object_list_next(iter, &rights)) {
if (acl_rights_is_owner(backend, &rights)) {
if (rights.rights != NULL) {
ret = TRUE;
break;
}
}
}
acl_object_list_deinit(&iter);
(void)acl_object_list_deinit(&iter);
return ret;
}

Expand All @@ -221,7 +221,7 @@ imap_acl_write_aclobj(string_t *dest, struct acl_backend *backend,

tmp = t_str_new(128);
iter = acl_object_list_init(aclobj);
while ((ret = acl_object_list_next(iter, &rights)) > 0) {
while (acl_object_list_next(iter, &rights)) {
if (acl_rights_is_owner(backend, &rights)) {
if (rights.id_type == ACL_ID_OWNER && convert_owner) {
rights.id_type = ACL_ID_USER;
Expand Down Expand Up @@ -249,7 +249,7 @@ imap_acl_write_aclobj(string_t *dest, struct acl_backend *backend,
imap_acl_write_right(dest, tmp, &rights, TRUE);
}
}
acl_object_list_deinit(&iter);
ret = acl_object_list_deinit(&iter);

if (!seen_positive_owner && username != NULL && add_default) {
/* no positive owner rights returned, write default ACLs */
Expand Down

0 comments on commit c7f6992

Please sign in to comment.