libubus: do not register/unregister with uloop during sync requests
[project/ubus.git] / ubusd_acl.c
index 15a58d8..4b72663 100644 (file)
@@ -101,7 +101,7 @@ ubusd_acl_check(struct ubus_client *cl, const char *obj,
        struct blob_attr *cur;
        int rem;
 
        struct blob_attr *cur;
        int rem;
 
-       if (!cl->uid)
+       if (!cl->uid || !obj)
                return 0;
 
        acl = avl_find_ge_element(&ubusd_acls, obj, acl, avl);
                return 0;
 
        acl = avl_find_ge_element(&ubusd_acls, obj, acl, avl);
@@ -174,6 +174,13 @@ ubusd_acl_init_client(struct ubus_client *cl, int fd)
        return 0;
 }
 
        return 0;
 }
 
+void
+ubusd_acl_free_client(struct ubus_client *cl)
+{
+       free(cl->group);
+       free(cl->user);
+}
+
 static void
 ubusd_acl_file_free(struct ubusd_acl_file *file)
 {
 static void
 ubusd_acl_file_free(struct ubusd_acl_file *file)
 {
@@ -427,7 +434,7 @@ ubusd_reply_add(struct ubus_object *obj)
                if (!acl->priv)
                        continue;
 
                if (!acl->priv)
                        continue;
 
-               if (!ubusd_acl_match_path(obj->path.key, acl->avl.key, NULL))
+               if (ubusd_acl_match_path(obj->path.key, acl->avl.key, NULL))
                        continue;
 
                c = blobmsg_open_table(&b, NULL);
                        continue;
 
                c = blobmsg_open_table(&b, NULL);