void ubusd_event_cleanup_object(struct ubus_object *obj)
{
- struct event_source *ev;
+ struct event_source *ev, *tmp;
- while (!list_empty(&obj->events)) {
- ev = list_first_entry(&obj->events, struct event_source, list);
+ list_for_each_entry_safe(ev, tmp, &obj->events, list) {
ubusd_delete_event_source(ev);
}
}
len--;
}
+ if (pattern[0] && ubusd_acl_check(cl, pattern, NULL, UBUS_ACL_LISTEN))
+ return UBUS_STATUS_PERMISSION_DENIED;
+
ev = calloc(1, sizeof(*ev) + len + 1);
if (!ev)
return UBUS_STATUS_NO_DATA;
struct event_source *ev;
int match_len = 0;
+ if (ubusd_acl_check(cl, id, NULL, UBUS_ACL_SEND))
+ return UBUS_STATUS_PERMISSION_DENIED;
+
obj_event_seq++;
/*
if (!ev->partial)
continue;
- if (match_len != strlen(key))
+ if (match_len != (int) strlen(key))
continue;
}