From: Eric Leblond Date: Sun, 17 Nov 2013 23:54:45 +0000 (+0100) Subject: verdict: fix delinearize in case of jump X-Git-Tag: v0.099~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3451f89c65345dd22987c068647f54625b2f26ee;p=thirdparty%2Fnftables.git verdict: fix delinearize in case of jump The name of the chain was not handled in case of a jump or a goto. This patch adds parsing of the chain. Reported-by: Alex Chapman Signed-off-by: Eric Leblond Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index 3bb143b82..7e4e38c49 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -81,9 +81,13 @@ static void netlink_parse_immediate(struct netlink_parse_ctx *ctx, struct stmt *stmt; struct expr *expr; - if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_VERDICT)) + if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_VERDICT)) { nld.verdict = nft_rule_expr_get_u32(nle, NFT_EXPR_IMM_VERDICT); - else if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_DATA)) { + if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_CHAIN)) { + nld.chain = nft_rule_expr_get(nle, NFT_EXPR_IMM_CHAIN, + &nld.len); + } + } else if (nft_rule_expr_is_set(nle, NFT_EXPR_IMM_DATA)) { nld.value = nft_rule_expr_get(nle, NFT_EXPR_IMM_DATA, &nld.len); }