From 0eff70a64cf1191fa9d794cd3eb25cd2c4557be4 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 9 Dec 2015 19:36:49 +0100 Subject: [PATCH] ubusd: simplify/fix avl loop in ubusd_acl_check() Signed-off-by: Felix Fietkau --- ubusd_acl.c | 7 ++----- 1 file 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;