net sched: fix kernel leak in act_police
Subsystems (3)
PATCH 1/1 net sched: fix kernel leak in act_police
While reviewing commit 1c40be12f7d8ca1d387510d39787b12e512a7ce8, I audited other users of tc_action_ops->dump for information leaks.
That commit covered almost all of them but act_police still had a leak.
opt.limit and opt.capab aren't zeroed out before the structure is passed out.
This patch uses the C99 initializers to zero everything unused out.
--- net/sched/act_police.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)
net/sched/act_police.c +8 -11
@@ -350,22 +350,19 @@ tcf_act_police_dump(struct sk_buff *skb, {unsigned char *b =skb_tail_pointer (skb);struct tcf_police *police = a->priv; -struct tc_police opt; +struct tc_police opt = { + .index = police->tcf_index, + .action = police->tcf_action, + .mtu = police->tcfp_mtu, + .burst = police->tcfp_burst, + .refcnt = police->tcf_refcnt - ref, + .bindcnt = police->tcf_bindcnt - bind, + }; - opt.index = police->tcf_index; - opt.action = police->tcf_action; - opt.mtu = police->tcfp_mtu; - opt.burst = police->tcfp_burst; - opt.refcnt = police->tcf_refcnt - ref; - opt.bindcnt = police->tcf_bindcnt - bind;if (police->tcfp_R_tab) opt.rate = police->tcfp_R_tab->rate; -else -memset (&opt.rate,0 ,sizeof (opt.rate));if (police->tcfp_P_tab) opt.peakrate = police->tcfp_P_tab->rate; -else -memset (&opt.peakrate,0 ,sizeof (opt.peakrate));NLA_PUT (skb,TCA_POLICE_TBF ,sizeof (opt), &opt);if (police->tcfp_result)NLA_PUT_U32 (skb,TCA_POLICE_RESULT , police->tcfp_result);
Signature · 2 lines
Jeff Mahoney SUSE Labs
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 5 lines · Jeff Mahoney
While reviewing commit
1c40be12f7d8ca1d387510d39787b12e512a7ce8, I audited other users oftc_action_ops->dumpfor information leaks.That commit covered almost all of them but
act_policestill had a leak.
Quoted 7 lines
opt.limit and opt.capab aren't zeroed out before the structure is passed out.
This patch uses the C99 initializers to zero everything unused out.
Signed-off-by Jeff Mahoney <[email protected]>Acked-by Jeff Mahoney <[email protected]>
Oops. Sorry about the Acked-by. I have a script that I use to rename patches for inclusion in our trees and it tacks that on. This patch was just pulled out of our master branch.
- -Jeff
Quoted 27 lines
--- net/sched/act_police.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)net/sched/act_police.c +8
-7@@ -350,22 +350,19 @@ tcf_act_police_dump(struct sk_buff *skb, {unsigned char *b =skb_tail_pointer (skb);struct tcf_police *police = a->priv; -struct tc_police opt; +struct tc_police opt = { + .index = police->tcf_index, + .action = police->tcf_action, + .mtu = police->tcfp_mtu, + .burst = police->tcfp_burst, + .refcnt = police->tcf_refcnt - ref, + .bindcnt = police->tcf_bindcnt - bind, + }; - opt.index = police->tcf_index; - opt.action = police->tcf_action; - opt.mtu = police->tcfp_mtu; - opt.burst = police->tcfp_burst; - opt.refcnt = police->tcf_refcnt - ref; - opt.bindcnt = police->tcf_bindcnt - bind;if (police->tcfp_R_tab)
net/sched/act_police.c tcf_act_police_dump(struct sk_buff *skb, · line 368
Quoted 10 lines
net/sched/act_police.c +0
-4opt.rate = police->tcfp_R_tab->rate; - else - memset(&opt.rate, 0, sizeof(opt.rate));if (police->tcfp_P_tab) opt.peakrate = police->tcfp_P_tab->rate; -else -memset (&opt.peakrate,0 ,sizeof (opt.peakrate));NLA_PUT (skb,TCA_POLICE_TBF ,sizeof (opt), &opt);if (police->tcfp_result)NLA_PUT_U32 (skb,TCA_POLICE_RESULT , police->tcfp_result);
- --
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.15 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org/
iEYEARECAAYFAkx9jxoACgkQLPWxlyuTD7JckgCeLVlJwnVM/cIgIQlB3iNKcVU5 misAnRfgTTmi/pGqyb1xFVoysQSTABal
=S9mH
-----END PGP SIGNATURE-----
From: Jeff Mahoney <[email protected]>
Date: Tue, 31 Aug 2010 19:21:42 -0400
Quoted 5 lines
While reviewing commit
1c40be12f7d8ca1d387510d39787b12e512a7ce8, I audited other users oftc_action_ops->dumpfor information leaks.That commit covered almost all of them but
act_policestill had a leak.
Quoted 7 lines
opt.limit and opt.capab aren't zeroed out before the structure is passed out.
This patch uses the C99 initializers to zero everything unused out.
Signed-off-by Jeff Mahoney <[email protected]>Acked-by Jeff Mahoney <[email protected]>
Applied.