]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
ct expectation: fix 'list object x' vs. 'list objects in table' confusion
authorFlorian Westphal <fw@strlen.de>
Fri, 28 Jul 2023 19:04:13 +0000 (21:04 +0200)
committerFlorian Westphal <fw@strlen.de>
Mon, 31 Jul 2023 13:04:57 +0000 (15:04 +0200)
Just like "ct timeout", "ct expectation" is in need of the same fix,
we get segfault on "nft list ct expectation table t", if table t exists.

This is the exact same pattern as resolved for "ct timeout" in commit
1d2e22fc0521 ("ct timeout: fix 'list object x' vs. 'list objects in table' confusion").

Signed-off-by: Florian Westphal <fw@strlen.de>
include/rule.h
src/cache.c
src/evaluate.c
src/parser_bison.y
src/rule.c

index 5cb549c2e14e1409a1e055de5e90dea409e310d4..13ab1bf3df5a8344a820a989b935688bb1efc1be 100644 (file)
@@ -649,6 +649,7 @@ enum cmd_obj {
        CMD_OBJ_SECMARK,
        CMD_OBJ_SECMARKS,
        CMD_OBJ_CT_EXPECT,
+       CMD_OBJ_CT_EXPECTATIONS,
        CMD_OBJ_SYNPROXY,
        CMD_OBJ_SYNPROXYS,
        CMD_OBJ_HOOKS,
index 5cab2622db95a46e969621ccacd564847ec30741..b6a7e194771a5bd401b2f90d93e4a073e0ab866a 100644 (file)
@@ -377,6 +377,7 @@ static int nft_handle_validate(const struct cmd *cmd, struct list_head *msgs)
        case CMD_OBJ_CT_TIMEOUT:
        case CMD_OBJ_CT_TIMEOUTS:
        case CMD_OBJ_CT_EXPECT:
+       case CMD_OBJ_CT_EXPECTATIONS:
                if (h->table.name &&
                    strlen(h->table.name) > NFT_NAME_MAXLEN) {
                        loc = &h->table.location;
index 33e4ac93e89af5d4a4bcb237da3de26aa464b00c..8fc1ca7e4b4f5fbbfea0e8014cffee6b4d1c435d 100644 (file)
@@ -5425,6 +5425,7 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd)
        case CMD_OBJ_SECMARKS:
        case CMD_OBJ_SYNPROXYS:
        case CMD_OBJ_CT_TIMEOUTS:
+       case CMD_OBJ_CT_EXPECTATIONS:
                if (cmd->handle.table.name == NULL)
                        return 0;
                if (!table_cache_find(&ctx->nft->cache.table_cache,
index 553ddf9757f49cb07fa9ef7b8212fa41c6ef55bf..ef5011c1d723d734d7f8d6c8c903a284d3c102aa 100644 (file)
@@ -4770,7 +4770,7 @@ ct_obj_type               :       HELPER          { $$ = NFT_OBJECT_CT_HELPER; }
 
 ct_cmd_type            :       HELPERS         { $$ = CMD_OBJ_CT_HELPERS; }
                        |       TIMEOUT         { $$ = CMD_OBJ_CT_TIMEOUTS; }
-                       |       EXPECTATION     { $$ = CMD_OBJ_CT_EXPECT; }
+                       |       EXPECTATION     { $$ = CMD_OBJ_CT_EXPECTATIONS; }
                        ;
 
 ct_l4protoname         :       TCP     close_scope_tcp { $$ = IPPROTO_TCP; }
index f4d00a8d340f0071ce444297520b9375aae220c5..4e60c1e636569af14edf72af821a6443f0179cfe 100644 (file)
@@ -2360,6 +2360,7 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd)
        case CMD_OBJ_CT_TIMEOUTS:
                return do_list_obj(ctx, cmd, NFT_OBJECT_CT_TIMEOUT);
        case CMD_OBJ_CT_EXPECT:
+       case CMD_OBJ_CT_EXPECTATIONS:
                return do_list_obj(ctx, cmd, NFT_OBJECT_CT_EXPECT);
        case CMD_OBJ_LIMIT:
        case CMD_OBJ_LIMITS: