aboutsummaryrefslogtreecommitdiffstats
path: root/tools/syz-declextract/testdata
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-12-02 10:57:36 +0100
committerDmitry Vyukov <dvyukov@google.com>2024-12-11 15:22:17 +0000
commit13dbd03bf7ca0a245cfdfd2d8c8b73e486bbaa7b (patch)
treea5dacd038d0ebfa8f3515b42ecb45656f59b933f /tools/syz-declextract/testdata
parent60f80647a03647bdf6c736952d6216b0ba32580e (diff)
pkg/declextract: emit more netlink families
Emit families w/o policy, emit duplicate commands.
Diffstat (limited to 'tools/syz-declextract/testdata')
-rw-r--r--tools/syz-declextract/testdata/netlink.c27
-rw-r--r--tools/syz-declextract/testdata/netlink.c.info1
-rw-r--r--tools/syz-declextract/testdata/netlink.c.json30
-rw-r--r--tools/syz-declextract/testdata/netlink.c.txt12
4 files changed, 70 insertions, 0 deletions
diff --git a/tools/syz-declextract/testdata/netlink.c b/tools/syz-declextract/testdata/netlink.c
index 355b84f1f..dc6ea4388 100644
--- a/tools/syz-declextract/testdata/netlink.c
+++ b/tools/syz-declextract/testdata/netlink.c
@@ -28,6 +28,10 @@ const struct nla_policy foo_genl_policy[] = {
[NETLINK_FOO_ATTR7] = { .len = sizeof(var) },
};
+const struct nla_policy foo_dump_genl_policy[] = {
+ [NETLINK_FOO_ATTR1] = { .type = NLA_U32 },
+};
+
const struct nla_policy genl_policy_reject_all[] = {
{ .type = NLA_REJECT },
{ .type = NLA_REJECT },
@@ -47,7 +51,13 @@ static const struct genl_ops foo_ops[] = {
{
.cmd = NETLINK_FOO_CMD_BAR,
.flags = GENL_UNS_ADMIN_PERM,
+ .doit = bar_cmd,
+ },
+ {
+ .cmd = NETLINK_FOO_CMD_BAR,
+ .flags = GENL_UNS_ADMIN_PERM,
.dumpit = bar_cmd,
+ .policy = foo_dump_genl_policy,
},
};
@@ -85,3 +95,20 @@ struct genl_family bar_family = {
struct genl_family noops_family = {
.name = "NOOPS",
};
+
+enum netlink_nopolicy_cmds {
+ NETLINK_NOPOLICY_CMD,
+};
+
+static const struct genl_ops nopolicy_ops[] = {
+ {
+ .cmd = NETLINK_NOPOLICY_CMD,
+ .doit = foo_cmd,
+ },
+};
+
+struct genl_family nopolicy_family = {
+ .name = "nopolicy",
+ .ops = nopolicy_ops,
+ .n_ops = ARRAY_SIZE(nopolicy_ops),
+};
diff --git a/tools/syz-declextract/testdata/netlink.c.info b/tools/syz-declextract/testdata/netlink.c.info
index e15a8e738..e57a57c73 100644
--- a/tools/syz-declextract/testdata/netlink.c.info
+++ b/tools/syz-declextract/testdata/netlink.c.info
@@ -1,3 +1,4 @@
NETLINK NETLINK_BAR_CMD_FOO func:NETLINK_BAR_CMD_FOO access:user manual_desc:false auto_desc:true file:netlink.c subsystem:kernel
NETLINK NETLINK_FOO_CMD_BAR func:bar_cmd access:ns_admin manual_desc:false auto_desc:true file:netlink.c subsystem:kernel
NETLINK NETLINK_FOO_CMD_FOO func:foo_cmd access:admin manual_desc:false auto_desc:true file:netlink.c subsystem:kernel
+NETLINK NETLINK_NOPOLICY_CMD func:foo_cmd access:user manual_desc:false auto_desc:true file:netlink.c subsystem:kernel
diff --git a/tools/syz-declextract/testdata/netlink.c.json b/tools/syz-declextract/testdata/netlink.c.json
index 99b18aae8..ed3a04b79 100644
--- a/tools/syz-declextract/testdata/netlink.c.json
+++ b/tools/syz-declextract/testdata/netlink.c.json
@@ -14,6 +14,10 @@
{
"name": "NETLINK_FOO_NESTED_ATTR2",
"value": "1"
+ },
+ {
+ "name": "NETLINK_NOPOLICY_CMD",
+ "value": "0"
}
],
"structs": [
@@ -127,6 +131,23 @@
"func": "bar_cmd",
"access": "ns_admin",
"policy": "foo_genl_policy_netlink"
+ },
+ {
+ "name": "NETLINK_FOO_CMD_BAR",
+ "func": "bar_cmd",
+ "access": "ns_admin",
+ "policy": "foo_dump_genl_policy_netlink"
+ }
+ ],
+ "source_file": "netlink.c"
+ },
+ {
+ "name": "nopolicy",
+ "ops": [
+ {
+ "name": "NETLINK_NOPOLICY_CMD",
+ "func": "foo_cmd",
+ "access": "user"
}
],
"source_file": "netlink.c"
@@ -134,6 +155,15 @@
],
"netlink_policies": [
{
+ "name": "foo_dump_genl_policy_netlink",
+ "attrs": [
+ {
+ "name": "NETLINK_FOO_ATTR1",
+ "kind": "NLA_U32"
+ }
+ ]
+ },
+ {
"name": "foo_genl_nested_policy_netlink",
"attrs": [
{
diff --git a/tools/syz-declextract/testdata/netlink.c.txt b/tools/syz-declextract/testdata/netlink.c.txt
index 96af4f31b..f4042d816 100644
--- a/tools/syz-declextract/testdata/netlink.c.txt
+++ b/tools/syz-declextract/testdata/netlink.c.txt
@@ -36,6 +36,17 @@ syz_genetlink_get_family_id$auto_foo_family(name ptr[in, string["foo family"]],
sendmsg$auto_NETLINK_FOO_CMD_FOO(fd sock_nl_generic, msg ptr[in, msghdr_foo_family$auto[NETLINK_FOO_CMD_FOO, foo_genl_policy_netlink$auto]], f flags[send_flags])
sendmsg$auto_NETLINK_FOO_CMD_BAR(fd sock_nl_generic, msg ptr[in, msghdr_foo_family$auto[NETLINK_FOO_CMD_BAR, foo_genl_policy_netlink$auto]], f flags[send_flags])
+sendmsg$auto_NETLINK_FOO_CMD_BAR2(fd sock_nl_generic, msg ptr[in, msghdr_foo_family$auto[NETLINK_FOO_CMD_BAR, foo_dump_genl_policy_netlink$auto]], f flags[send_flags])
+
+foo_dump_genl_policy_netlink$auto [
+ NETLINK_FOO_ATTR1 nlattr[NETLINK_FOO_ATTR1, int32]
+] [varlen]
+
+resource genl_nopolicy_family_id$auto[int16]
+type msghdr_nopolicy$auto[CMD, POLICY] msghdr_netlink[netlink_msg_t[genl_nopolicy_family_id$auto, genlmsghdr_t[CMD], POLICY]]
+syz_genetlink_get_family_id$auto_nopolicy(name ptr[in, string["nopolicy"]], fd sock_nl_generic) genl_nopolicy_family_id$auto
+
+sendmsg$auto_NETLINK_NOPOLICY_CMD(fd sock_nl_generic, msg ptr[in, msghdr_nopolicy$auto[NETLINK_NOPOLICY_CMD, void]], f flags[send_flags])
netlink_foo_struct1$auto {
a int32
@@ -52,3 +63,4 @@ netlink_foo_struct2$auto {
define NETLINK_BAR_CMD_FOO 0
define NETLINK_FOO_NESTED_ATTR1 0
define NETLINK_FOO_NESTED_ATTR2 1
+define NETLINK_NOPOLICY_CMD 0