]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser_json: fix device parsing in netdev family
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 1 Aug 2022 14:15:08 +0000 (16:15 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 2 Aug 2022 09:39:37 +0000 (11:39 +0200)
json_unpack() function is not designed to take a pre-allocated buffer.

Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1612
Fixes: 3fdc7541fba0 ("src: add multidevice support for netdev chain")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/parser_json.c
tests/shell/testcases/json/netdev [new file with mode: 0755]

index fb401009a499729898312a7d59e2c383312bb3db..9e93927a9a2b853d39cdeb5bfc020fbf3a12217b 100644 (file)
@@ -2780,8 +2780,7 @@ static struct cmd *json_parse_cmd_add_chain(struct json_ctx *ctx, json_t *root,
        struct handle h = {
                .table.location = *int_loc,
        };
-       const char *family = "", *policy = "", *type, *hookstr;
-       const char name[IFNAMSIZ];
+       const char *family = "", *policy = "", *type, *hookstr, *name;
        struct chain *chain;
        int prio;
 
diff --git a/tests/shell/testcases/json/netdev b/tests/shell/testcases/json/netdev
new file mode 100755 (executable)
index 0000000..a16a4f5
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+ip link add d0 type dummy || {
+        echo "Skipping, no dummy interface available"
+        exit 0
+}
+trap "ip link del d0" EXIT
+
+set -e
+
+$NFT flush ruleset
+$NFT add table inet test
+$NFT add chain inet test c
+
+$NFT flush ruleset
+
+RULESET='{"nftables":[{"flush":{"ruleset":null}},{"add":{"table":{"family":"netdev","name":"test_table"}}},{"add":{"chain":{"family":"netdev","table":"test_table","name":"test_chain","type":"filter","hook":"ingress","prio":0,"dev":"d0","policy":"accept"}}}]}'
+
+$NFT -j -f - <<< $RULESET