Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3298dc0 authored by Jeffy Chen's avatar Jeffy Chen Committed by Greg Kroah-Hartman
Browse files

netfilter: nfnl_cthelper: Fix memory leak




[ Upstream commit f83bf8da1135ca635aac8f062cad3f001fcf3a26 ]

We have memory leaks of nf_conntrack_helper & expect_policy.

Signed-off-by: default avatarJeffy Chen <jeffy.chen@rock-chips.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 09bb6f00
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ nfnl_cthelper_create(const struct nlattr * const tb[],

	ret = nfnl_cthelper_parse_expect_policy(helper, tb[NFCTH_POLICY]);
	if (ret < 0)
		goto err;
		goto err1;

	strncpy(helper->name, nla_data(tb[NFCTH_NAME]), NF_CT_HELPER_NAME_LEN);
	helper->data_len = ntohl(nla_get_be32(tb[NFCTH_PRIV_DATA_LEN]));
@@ -247,10 +247,12 @@ nfnl_cthelper_create(const struct nlattr * const tb[],

	ret = nf_conntrack_helper_register(helper);
	if (ret < 0)
		goto err;
		goto err2;

	return 0;
err:
err2:
	kfree(helper->expect_policy);
err1:
	kfree(helper);
	return ret;
}
@@ -696,6 +698,8 @@ nfnl_cthelper_del(struct sock *nfnl, struct sk_buff *skb,

			found = true;
			nf_conntrack_helper_unregister(cur);
			kfree(cur->expect_policy);
			kfree(cur);
		}
	}
	/* Make sure we return success if we flush and there is no helpers */
@@ -759,6 +763,8 @@ static void __exit nfnl_cthelper_exit(void)
				continue;

			nf_conntrack_helper_unregister(cur);
			kfree(cur->expect_policy);
			kfree(cur);
		}
	}
}