nftables/backport-dump-locations-expressions-only-if-set.patch
2023-03-22 19:40:29 +08:00

38 lines
1.1 KiB
Diff

From 5472143922531e0f7ea2770b302903f5002472df Mon Sep 17 00:00:00 2001
From: Phil Sutter <phil@nwl.cc>
Date: Tue, 30 Aug 2022 15:00:52 +0200
Subject: erec: Dump locations' expressions only if set
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Calling netlink_dump_expr() with a NULL pointer leads to segfault within
libnftnl. Internal ("fake") locations such as 'netlink_location' don't
have an expression assigned so expect this and skip the call. Simple
reproducer (list ruleset with netlink debugging as non-root):
| $ nft -d netlink list ruleset
Reported-by: François Rigault <frigo@amadeus.com>
Signed-off-by: Phil Sutter <phil@nwl.cc>
---
src/erec.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/erec.c b/src/erec.c
index a4b93fb0..aebb8632 100644
--- a/src/erec.c
+++ b/src/erec.c
@@ -170,6 +170,8 @@ void erec_print(struct output_ctx *octx, const struct error_record *erec,
fprintf(f, "%s\n", erec->msg);
for (l = 0; l < (int)erec->num_locations; l++) {
loc = &erec->locations[l];
+ if (!loc->nle)
+ continue;
netlink_dump_expr(loc->nle, f, debug_mask);
}
return;
--
cgit v1.2.3