From 09f387b2fabc96be83b1685b684fbcc4259b7edd Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 30 May 2013 14:58:30 +0200 Subject: [PATCH] Fix session.get procedure with undefined keys attribute --- session.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/session.c b/session.c index 9c2b35d..6352354 100644 --- a/session.c +++ b/session.c @@ -525,24 +525,22 @@ rpc_handle_get(struct ubus_context *ctx, struct ubus_object *obj, blob_buf_init(&buf, 0); c = blobmsg_open_table(&buf, "values"); - if (!tb[RPC_SG_KEYS]) { - rpc_session_dump_data(ses, &buf); - return 0; - } - - blobmsg_for_each_attr(attr, tb[RPC_SG_KEYS], rem) { - if (blob_id(attr) != BLOBMSG_TYPE_STRING) - continue; + if (tb[RPC_SG_KEYS]) + blobmsg_for_each_attr(attr, tb[RPC_SG_KEYS], rem) { + if (blob_id(attr) != BLOBMSG_TYPE_STRING) + continue; - data = avl_find_element(&ses->data, blobmsg_data(attr), data, avl); - if (!data) - continue; + data = avl_find_element(&ses->data, blobmsg_data(attr), data, avl); + if (!data) + continue; - blobmsg_add_field(&buf, blobmsg_type(data->attr), - blobmsg_name(data->attr), - blobmsg_data(data->attr), - blobmsg_data_len(data->attr)); - } + blobmsg_add_field(&buf, blobmsg_type(data->attr), + blobmsg_name(data->attr), + blobmsg_data(data->attr), + blobmsg_data_len(data->attr)); + } + else + rpc_session_dump_data(ses, &buf); blobmsg_close_table(&buf, c); ubus_send_reply(ctx, req, buf.head); -- 2.11.0