summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-12-09 19:36:49 +0100
committerFelix Fietkau <nbd@openwrt.org>2015-12-09 19:36:49 +0100
commit0eff70a64cf1191fa9d794cd3eb25cd2c4557be4 (patch)
treed6001d6c9dce5106a70a9e866159b9016d72d5b1
parent635ada42517f2fd79663a2a45f07c9461f6d20bc (diff)
downloadubus-0eff70a64cf1191fa9d794cd3eb25cd2c4557be4.tar.gz
ubusd: simplify/fix avl loop in ubusd_acl_check()
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r--ubusd_acl.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/ubusd_acl.c b/ubusd_acl.c
index dbfa83a..9f0f0fc 100644
--- a/ubusd_acl.c
+++ b/ubusd_acl.c
@@ -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;