path: root/src/json.c
diff options
authorPhil Sutter <>2018-10-24 21:14:37 +0200
committerPablo Neira Ayuso <>2018-10-24 21:20:43 +0200
commitb849b0dfd9f3aecff5617bc60d5852ef36c3d494 (patch)
tree609019a341ba89449115d86465577495d1bbba32 /src/json.c
parent4e9c475680aff492c34845a958638c1a43906e07 (diff)
json: Work around segfault when encountering xt stmt
When trying to convert an xt stmt into JSON, print() callback was called. Though the code in src/xt.c does not respect output_fp, therefore buffer wasn't filled as expected making libjansson to puke: | # nft -j list ruleset | warning: stmt ops xt have no json callback | nft: json.c:169: stmt_print_json: Assertion `__out' failed. | Aborted (core dumped) Avoid this by detecting xt stmt ops and returning a stub. Signed-off-by: Phil Sutter <> Signed-off-by: Pablo Neira Ayuso <>
Diffstat (limited to 'src/json.c')
1 files changed, 6 insertions, 0 deletions
diff --git a/src/json.c b/src/json.c
index 431d38af..f08a3b64 100644
--- a/src/json.c
+++ b/src/json.c
@@ -166,6 +166,12 @@ static json_t *stmt_print_json(const struct stmt *stmt, struct output_ctx *octx)
char buf[1024];
FILE *fp;
+ /* XXX: Can't be supported at this point:
+ * xt_stmt_xlate() ignores output_fp.
+ */
+ if (stmt->ops->type == STMT_XT)
+ return json_pack("{s:n}", "xt");
if (stmt->ops->json)
return stmt->ops->json(stmt, octx);