mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
netfilter: xt_dscp: add checkentry for tos match
The 'tos' match registered in xt_dscp.c has no .checkentry callback, allowing userspace to insert rules with a non-boolean invert field without any validation. Add tos_mt_check() that rejects invert > 1 and attach it to both the IPv4 and IPv6 'tos' match registrations. Signed-off-by: Feng Wu <wufengwufengwufeng@gmail.com> Signed-off-by: Florian Westphal <fw@strlen.de>
This commit is contained in:
parent
68fc6c6470
commit
60aee97fc7
|
|
@ -49,6 +49,16 @@ static int dscp_mt_check(const struct xt_mtchk_param *par)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int tos_mt_check(const struct xt_mtchk_param *par)
|
||||
{
|
||||
const struct xt_tos_match_info *info = par->matchinfo;
|
||||
|
||||
if (info->invert > 1)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool tos_mt(const struct sk_buff *skb, struct xt_action_param *par)
|
||||
{
|
||||
const struct xt_tos_match_info *info = par->matchinfo;
|
||||
|
|
@ -82,6 +92,7 @@ static struct xt_match dscp_mt_reg[] __read_mostly = {
|
|||
.name = "tos",
|
||||
.revision = 1,
|
||||
.family = NFPROTO_IPV4,
|
||||
.checkentry = tos_mt_check,
|
||||
.match = tos_mt,
|
||||
.matchsize = sizeof(struct xt_tos_match_info),
|
||||
.me = THIS_MODULE,
|
||||
|
|
@ -90,6 +101,7 @@ static struct xt_match dscp_mt_reg[] __read_mostly = {
|
|||
.name = "tos",
|
||||
.revision = 1,
|
||||
.family = NFPROTO_IPV6,
|
||||
.checkentry = tos_mt_check,
|
||||
.match = tos_mt,
|
||||
.matchsize = sizeof(struct xt_tos_match_info),
|
||||
.me = THIS_MODULE,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user