From 5472143922531e0f7ea2770b302903f5002472df Mon Sep 17 00:00:00 2001 From: Phil Sutter 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 Signed-off-by: Phil Sutter --- 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