mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-12 07:14:03 +08:00
netfilter: x_tables: fix pointer leaks to userspace
Several netfilter matches and targets put kernel pointers into
info objects, but don't set usersize in descriptors.
This leads to kernel pointer leaks if a match/target is set
and then read back to userspace.
Properly set usersize for these matches/targets.
Found with manual code inspection.
Fixes: ec23189049
("xtables: extend matches and targets with .usersize")
Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
0b8d907353
commit
1e98ffea5a
@ -252,6 +252,7 @@ static struct xt_target idletimer_tg __read_mostly = {
|
||||
.family = NFPROTO_UNSPEC,
|
||||
.target = idletimer_tg_target,
|
||||
.targetsize = sizeof(struct idletimer_tg_info),
|
||||
.usersize = offsetof(struct idletimer_tg_info, timer),
|
||||
.checkentry = idletimer_tg_checkentry,
|
||||
.destroy = idletimer_tg_destroy,
|
||||
.me = THIS_MODULE,
|
||||
|
@ -198,6 +198,7 @@ static struct xt_target led_tg_reg __read_mostly = {
|
||||
.family = NFPROTO_UNSPEC,
|
||||
.target = led_tg,
|
||||
.targetsize = sizeof(struct xt_led_info),
|
||||
.usersize = offsetof(struct xt_led_info, internal_data),
|
||||
.checkentry = led_tg_check,
|
||||
.destroy = led_tg_destroy,
|
||||
.me = THIS_MODULE,
|
||||
|
@ -193,9 +193,8 @@ static struct xt_match limit_mt_reg __read_mostly = {
|
||||
.compatsize = sizeof(struct compat_xt_rateinfo),
|
||||
.compat_from_user = limit_mt_compat_from_user,
|
||||
.compat_to_user = limit_mt_compat_to_user,
|
||||
#else
|
||||
.usersize = offsetof(struct xt_rateinfo, prev),
|
||||
#endif
|
||||
.usersize = offsetof(struct xt_rateinfo, prev),
|
||||
.me = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
@ -62,6 +62,7 @@ static struct xt_match nfacct_mt_reg __read_mostly = {
|
||||
.match = nfacct_mt,
|
||||
.destroy = nfacct_mt_destroy,
|
||||
.matchsize = sizeof(struct xt_nfacct_match_info),
|
||||
.usersize = offsetof(struct xt_nfacct_match_info, nfacct),
|
||||
.me = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
@ -84,6 +84,7 @@ static struct xt_match xt_statistic_mt_reg __read_mostly = {
|
||||
.checkentry = statistic_mt_check,
|
||||
.destroy = statistic_mt_destroy,
|
||||
.matchsize = sizeof(struct xt_statistic_info),
|
||||
.usersize = offsetof(struct xt_statistic_info, master),
|
||||
.me = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user