89 lines
2.9 KiB
Diff
89 lines
2.9 KiB
Diff
From a8ff324dc64fd76f7d218d3d94c5885250951258 Mon Sep 17 00:00:00 2001
|
|
From: Florian Westphal <fw@strlen.de>
|
|
Date: Fri, 28 Jul 2023 21:04:13 +0200
|
|
Subject: ct expectation: fix 'list object x' vs. 'list objects in table'
|
|
confusion
|
|
|
|
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>
|
|
|
|
Conflict:NA
|
|
Reference:https://git.netfilter.org/nftables/commit/?id=a8ff324dc64fd76f7d218d3d94c5885250951258
|
|
|
|
---
|
|
include/rule.h | 1 +
|
|
src/cache.c | 1 +
|
|
src/evaluate.c | 1 +
|
|
src/parser_bison.y | 2 +-
|
|
src/rule.c | 1 +
|
|
5 files changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/include/rule.h b/include/rule.h
|
|
index 5cb549c2..13ab1bf3 100644
|
|
--- a/include/rule.h
|
|
+++ b/include/rule.h
|
|
@@ -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,
|
|
diff --git a/src/cache.c b/src/cache.c
|
|
index 5cab2622..b6a7e194 100644
|
|
--- a/src/cache.c
|
|
+++ b/src/cache.c
|
|
@@ -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;
|
|
diff --git a/src/evaluate.c b/src/evaluate.c
|
|
index 33e4ac93..8fc1ca7e 100644
|
|
--- a/src/evaluate.c
|
|
+++ b/src/evaluate.c
|
|
@@ -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,
|
|
diff --git a/src/parser_bison.y b/src/parser_bison.y
|
|
index 553ddf97..ef5011c1 100644
|
|
--- a/src/parser_bison.y
|
|
+++ b/src/parser_bison.y
|
|
@@ -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; }
|
|
diff --git a/src/rule.c b/src/rule.c
|
|
index f4d00a8d..4e60c1e6 100644
|
|
--- a/src/rule.c
|
|
+++ b/src/rule.c
|
|
@@ -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:
|
|
--
|
|
cgit v1.2.3
|