mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
altq: Clear stats structures in get_class_stats()
These structures are copied out to userspace, and it's possible to leak uninitialized stack bytes since these routines and their callers weren't careful to clear them first. Add memsets to avoid this. Reported by: Ilja Van Sprundel <[email protected]> Reviewed by: kp, emaste MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D53342
This commit is contained in:
1 parent
32919a34f1
commit
ff08916e9a
3 files changed
+6
No files matched your search
@@ -173,6 +173,8 @@ cbq_request(struct ifaltq *ifq, int req, void *arg)
|
||||
static void
|
||||
get_class_stats(class_stats_t *statsp, struct rm_class *cl)
|
||||
{
|
||||
memset(statsp, 0, sizeof(*statsp));
|
||||
|
||||
statsp->xmit_cnt = cl->stats_.xmit_cnt;
|
||||
statsp->drop_cnt = cl->stats_.drop_cnt;
|
||||
statsp->over = cl->stats_.over;
|
||||
|
||||
@@ -857,6 +857,8 @@ get_class_stats(struct fairq_classstats *sp, struct fairq_class *cl)
|
||||
{
|
||||
fairq_bucket_t *b;
|
||||
|
||||
memset(sp, 0, sizeof(*sp));
|
||||
|
||||
sp->class_handle = cl->cl_handle;
|
||||
sp->qlimit = cl->cl_qlimit;
|
||||
sp->xmit_cnt = cl->cl_xmitcnt;
|
||||
|
||||
@@ -597,6 +597,8 @@ priq_purgeq(struct priq_class *cl)
|
||||
static void
|
||||
get_class_stats(struct priq_classstats *sp, struct priq_class *cl)
|
||||
{
|
||||
memset(sp, 0, sizeof(*sp));
|
||||
|
||||
sp->class_handle = cl->cl_handle;
|
||||
sp->qlength = qlen(cl->cl_q);
|
||||
sp->qlimit = qlimit(cl->cl_q);
|
||||
|
||||
Reference in new issue
Block a user