diff options
author | Phil Sutter <phil@nwl.cc> | 2018-10-24 21:14:37 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-24 21:20:43 +0200 |
commit | b849b0dfd9f3aecff5617bc60d5852ef36c3d494 (patch) | |
tree | 609019a341ba89449115d86465577495d1bbba32 /src/json.c | |
parent | 4e9c475680aff492c34845a958638c1a43906e07 (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 <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/json.c')
-rw-r--r-- | src/json.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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); |