From: Felix Fietkau Date: Wed, 9 Dec 2015 18:36:49 +0000 (+0100) Subject: ubusd: simplify/fix avl loop in ubusd_acl_check() X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubus.git;a=commitdiff_plain;h=0eff70a64cf1191fa9d794cd3eb25cd2c4557be4 ubusd: simplify/fix avl loop in ubusd_acl_check() Signed-off-by: Felix Fietkau --- 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;