if (obj->type && obj->type->refcount == 1)
blob_put_int32(&b, UBUS_ATTR_OBJTYPE, obj->type->id.id);
- ubusd_free_object(obj);
ubus_proto_send_msg_from_blob(cl, ub, UBUS_MSG_DATA);
+ ubusd_free_object(obj);
return 0;
}
blob_buf_init(&b, 0);
blob_put_int32(&b, UBUS_ATTR_OBJID, obj->id.id);
- if (attr[UBUS_ATTR_SIGNATURE])
+ if (attr[UBUS_ATTR_SIGNATURE] && obj->type)
blob_put_int32(&b, UBUS_ATTR_OBJTYPE, obj->type->id.id);
ubus_proto_send_msg_from_blob(cl, ub, UBUS_MSG_DATA);
int cnt = 0;
void *s;
+ if (!obj->type)
+ return;
+
blob_buf_init(&b, 0);
blob_put_string(&b, UBUS_ATTR_OBJPATH, obj->path.key);
method = blob_data(attr[UBUS_ATTR_METHOD]);
if (ubusd_acl_check(cl, obj->path.key, method, UBUS_ACL_ACCESS))
- return UBUS_STATUS_NOT_FOUND;
+ return UBUS_STATUS_PERMISSION_DENIED;
if (!obj->client)
return obj->recv_msg(cl, ub, method, attr[UBUS_ATTR_DATA]);
ubusd_free_object(obj);
}
+ ubusd_acl_free_client(cl);
ubus_free_id(&clients, &cl->id);
}