lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20230502170516.39760-1-kuniyu@amazon.com> Date: Tue, 2 May 2023 10:05:16 -0700 From: Kuniyuki Iwashima <kuniyu@...zon.com> To: <ilia.gavrilov@...otecs.ru> CC: <davem@...emloft.net>, <edumazet@...gle.com>, <kuba@...nel.org>, <linux-kernel@...r.kernel.org>, <linux-sctp@...r.kernel.org>, <lucien.xin@...il.com>, <lvc-project@...uxtesting.org>, <marcelo.leitner@...il.com>, <netdev@...r.kernel.org>, <nhorman@...driver.com>, <pabeni@...hat.com>, <simon.horman@...igine.com>, <kuniyu@...zon.com> Subject: Re: [PATCH net v2] sctp: fix a potential buffer overflow in sctp_sched_set_sched() From: Gavrilov Ilia <Ilia.Gavrilov@...otecs.ru> Date: Tue, 2 May 2023 13:03:24 +0000 > The 'sched' index value must be checked before accessing an element > of the 'sctp_sched_ops' array. Otherwise, it can lead to buffer overflow. OOB access ? But it's not true because it does not happen in the first place. > > Note that it's harmless since the 'sched' parameter is checked before > calling 'sctp_sched_set_sched'. > > Found by InfoTeCS on behalf of Linux Verification Center > (linuxtesting.org) with SVACE. > > Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations") > Reviewed-by: Simon Horman <simon.horman@...igine.com> > Signed-off-by: Ilia.Gavrilov <Ilia.Gavrilov@...otecs.ru> > --- > V2: > - Change the order of local variables > - Specify the target tree in the subject > net/sctp/stream_sched.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/net/sctp/stream_sched.c b/net/sctp/stream_sched.c > index 330067002deb..4d076a9b8592 100644 > --- a/net/sctp/stream_sched.c > +++ b/net/sctp/stream_sched.c > @@ -146,18 +146,19 @@ static void sctp_sched_free_sched(struct sctp_stream *stream) > int sctp_sched_set_sched(struct sctp_association *asoc, > enum sctp_sched_type sched) > { > - struct sctp_sched_ops *n = sctp_sched_ops[sched]; > struct sctp_sched_ops *old = asoc->outqueue.sched; > struct sctp_datamsg *msg = NULL; > + struct sctp_sched_ops *n; > struct sctp_chunk *ch; > int i, ret = 0; > > - if (old == n) > - return ret; > - > if (sched > SCTP_SS_MAX) > return -EINVAL; I'd just remove this check instead because the same test is done in the caller side, sctp_setsockopt_scheduler(), and this errno is never returned. This unnecessary test confuses a reader like sched could be over SCTP_SS_MAX here. Since the OOB access does not happen, I think this patch should go to net-next without the Fixes tag after the merge window. Thanks, Kuniyuki > > + n = sctp_sched_ops[sched]; > + if (old == n) > + return ret; > + > if (old) > sctp_sched_free_sched(&asoc->stream); > > -- > 2.30.2
Powered by blists - more mailing lists