ubusd: simplify/fix avl loop in ubusd_acl_check()

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Felix Fietkau 2015-12-09 19:36:49 +01:00
parent 635ada4251
commit 0eff70a64c

View file

@ -105,16 +105,14 @@ ubusd_acl_check(struct ubus_client *cl, const char *obj,
return 0;
acl = avl_find_ge_element(&ubusd_acls, obj, acl, avl);
while (acl) {
avl_for_element_to_last(&ubusd_acls, acl, acl, avl) {
int diff = ubusd_acl_match_path(obj, acl->avl.key, NULL);
if (diff)
break;
if (ubusd_acl_match_cred(cl, acl)) {
acl = avl_next_element(acl, avl);
if (ubusd_acl_match_cred(cl, acl))
continue;
}
switch (type) {
case UBUS_ACL_PUBLISH:
@ -135,7 +133,6 @@ ubusd_acl_check(struct ubus_client *cl, const char *obj,
return 0;
break;
}
acl = avl_next_element(acl, avl);
}
return -1;