Browse Source

ubus: avoid dumping interface state with NULL message

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>
Jo-Philipp Wich 5 years ago
parent
commit
aa8846bb10
1 changed files with 6 additions and 3 deletions
  1. 6 3
      ubus.c

+ 6 - 3
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;
 }