summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ubusd_acl.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ubusd_acl.c b/ubusd_acl.c
index e426a4a..e050e2c 100644
--- a/ubusd_acl.c
+++ b/ubusd_acl.c
@@ -147,12 +147,16 @@ ubusd_acl_check(struct ubus_client *cl, const char *obj,
case UBUS_ACL_ACCESS:
if (acl->methods) {
struct blob_attr *cur;
+ char *cur_method;
size_t rem;
blobmsg_for_each_attr(cur, acl->methods, rem)
- if (blobmsg_type(cur) == BLOBMSG_TYPE_STRING)
- if (!strcmp(method, blobmsg_get_string(cur)))
+ if (blobmsg_type(cur) == BLOBMSG_TYPE_STRING) {
+ cur_method = blobmsg_get_string(cur);
+
+ if (!strcmp(method, cur_method) || !strcmp("*", cur_method))
return 0;
+ }
}
break;
}