From 1d3f29d61b24ae1a41ef9acd3fcbe658a8892b9c Mon Sep 17 00:00:00 2001 From: Liping Zhang Date: Sun, 28 Aug 2016 16:50:46 +0800 Subject: extensions: libipt_DNAT/SNAT: fix "OOM" when do translation to nft When I want to translate SNAT target to nft rule, an error message was printed out: # iptables-translate -A POSTROUTING -j SNAT --to-source 1.1.1.1 iptables-translate v1.6.0: OOM Because ipt_natinfo{} started with a xt_entry_target{}, so when we get the ipt_natinfo pointer, we should use the target itself, not its data pointer. Yes, it is a little tricky and it's different with other targets. Fixes: 7a0992da44cf ("src: introduce struct xt_xlate_{mt,tg}_params") Signed-off-by: Liping Zhang Signed-off-by: Pablo Neira Ayuso --- extensions/libipt_SNAT.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'extensions/libipt_SNAT.c') diff --git a/extensions/libipt_SNAT.c b/extensions/libipt_SNAT.c index 71717fd8..5c699d32 100644 --- a/extensions/libipt_SNAT.c +++ b/extensions/libipt_SNAT.c @@ -276,7 +276,7 @@ static void print_range_xlate(const struct nf_nat_ipv4_range *r, static int SNAT_xlate(struct xt_xlate *xl, const struct xt_xlate_tg_params *params) { - const struct ipt_natinfo *info = (const void *)params->target->data; + const struct ipt_natinfo *info = (const void *)params->target; unsigned int i = 0; bool sep_need = false; const char *sep = " "; -- cgit v1.2.3