ubus: avoid dumping interface state with NULL message
authorJo-Philipp Wich <jo@mein.io>
Thu, 26 Jul 2018 06:02:01 +0000 (08:02 +0200)
committerJo-Philipp Wich <jo@mein.io>
Thu, 26 Jul 2018 06:42:36 +0000 (08:42 +0200)
Invoking ubus methods with NULL message is not supported anymore, so
make sure that network.interface/dump is called with an empty blob buffer
argument.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
ubus.c

diff --git a/ubus.c b/ubus.c
index 7029d630af60f54298f929acf581a7afe0c223f6..bea91665c828f408eb655315140471e15cfdf4e9 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -45,13 +45,15 @@ fw3_ubus_connect(void)
        struct ubus_context *ctx = ubus_connect(NULL);
        struct blob_buf b = { };
 
+       blob_buf_init(&b, 0);
+
        if (!ctx)
                goto out;
 
        if (ubus_lookup_id(ctx, "network.interface", &id))
                goto out;
 
-       if (ubus_invoke(ctx, id, "dump", NULL, dump_cb, NULL, 2000))
+       if (ubus_invoke(ctx, id, "dump", b.head, dump_cb, NULL, 2000))
                goto out;
 
        status = true;
@@ -59,14 +61,15 @@ fw3_ubus_connect(void)
        if (ubus_lookup_id(ctx, "service", &id))
                goto out;
 
-       blob_buf_init(&b, 0);
        blobmsg_add_string(&b, "type", "firewall");
        ubus_invoke(ctx, id, "get_data", b.head, procd_data_cb, NULL, 2000);
-       blob_buf_free(&b);
 
 out:
+       blob_buf_free(&b);
+
        if (ctx)
                ubus_free(ctx);
+
        return status;
 }