From: Mike Frysinger <vapier@chromium.org>
To: tiwai@suse.de
Cc: alsa-devel@alsa-project.org,
Manoj Gupta <manojgupta@chromium.org>,
pmalani@chromium.org, Dylan Reid <dgreid@chromium.org>
Subject: Re: Suspected heap overflow in snd_midi_event_encode_byte()
Date: Tue, 28 Aug 2018 16:08:53 -0400 [thread overview]
Message-ID: <CAAbOScmHNMfhGMX-NsgWUiOfN2HnWPsDAxLBWMXcWixSiH3mJQ@mail.gmail.com> (raw)
In-Reply-To: <s5ha7p87zvd.wl-tiwai@suse.de>
the preferred flow looks something like:
- we put together the fix
- send fix to upstream (alsa) project
- upstream reviews/merges
- if we get a new release, update to that
- if new release is going to be a while, backport the patch to latest
ebuild and send a PR to Gentoo's GH (github.com/gentoo/gentoo)
- once Gentoo merges the PR, roll the fix into portage-stable
otherwise if things are up for debate along the way, we have
chromiumos-overlay to hold our own forked packages.
-mike
On Mon, Aug 27, 2018 at 8:33 AM Takashi Iwai <tiwai@suse.de> wrote:
> On Thu, 23 Aug 2018 22:41:15 +0200,
> Prashant Malani wrote:
> >
> > Thanks.
> >
> > Curious to know: Whats the URL for alsa-lib git tree? I'd love to be able
> > to check it out.
>
> You can get it from git.alsa-project.org
>
>
> Takashi
>
> >
> > On Wed, Aug 22, 2018 at 11:46 PM, Takashi Iwai <tiwai@suse.de> wrote:
> >
> > > On Wed, 22 Aug 2018 23:32:35 +0200,
> > > Prashant Malani wrote:
> > > >
> > > > Thanks Takashi,
> > > >
> > > > I can confirm that this patch fixes the heap overflow issue.
> > > > Could you kindly submit this patch into the alsa-lib tree?
> > >
> > > Now applied the following patch to git tree.
> > >
> > >
> > > thanks,
> > >
> > > Takashi
> > >
> > > -- 8< --
> > > From: Takashi Iwai <tiwai@suse.de>
> > > Subject: [PATCH] seq: Fix signedness in MIDI encoder/decoder
> > >
> > > The qlen field of struct snd_midi_event was declared as size_t while
> > > status_events[] assigns the qlen to -1 indicating to skip. This leads
> > > to the misinterpretation since size_t is unsigned, hence it passes the
> > > check "dev.qlen > 0" incorrectly in snd_midi_event_encode_byte(),
> > > which eventually results in a memory corruption.
> > >
> > > Also, snd_midi_event_decode() doesn't consider about a negative qlen
> > > value and tries to copy the size as is.
> > >
> > > This patch fixes these issues: the first one is addressed by simply
> > > replacing size_t with ssize_t in snd_midi_event struct. For the
> > > latter, a check "qlen <= 0" is added to bail out; this is also good as
> > > a slight optimization.
> > >
> > > Reported-by: Prashant Malani <pmalani@chromium.org>
> > > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > > ---
> > > src/seq/seq_midi_event.c | 4 +++-
> > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/src/seq/seq_midi_event.c b/src/seq/seq_midi_event.c
> > > index 2e7d1035442a..5a12a18ce781 100644
> > > --- a/src/seq/seq_midi_event.c
> > > +++ b/src/seq/seq_midi_event.c
> > > @@ -35,7 +35,7 @@
> > >
> > > /* midi status */
> > > struct snd_midi_event {
> > > - size_t qlen; /* queue length */
> > > + ssize_t qlen; /* queue length */
> > > size_t read; /* chars read */
> > > int type; /* current event type */
> > > unsigned char lastcmd;
> > > @@ -606,6 +606,8 @@ long snd_midi_event_decode(snd_midi_event_t *dev,
> > > unsigned char *buf, long count
> > > status_event[type].decode(ev, xbuf +
> 0);
> > > qlen = status_event[type].qlen;
> > > }
> > > + if (qlen <= 0)
> > > + return 0;
> > > if (count < qlen)
> > > return -ENOMEM;
> > > memcpy(buf, xbuf, qlen);
> > > --
> > > 2.18.0
> > >
> > >
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel@alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >
>
next prev parent reply other threads:[~2018-08-28 20:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-21 21:24 Suspected heap overflow in snd_midi_event_encode_byte() Prashant Malani
2018-08-22 7:52 ` Takashi Iwai
2018-08-22 21:32 ` Prashant Malani
2018-08-23 6:46 ` Takashi Iwai
2018-08-23 20:41 ` Prashant Malani
2018-08-27 12:33 ` Takashi Iwai
2018-08-28 20:08 ` Mike Frysinger [this message]
2018-08-29 4:57 ` Prashant Malani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAAbOScmHNMfhGMX-NsgWUiOfN2HnWPsDAxLBWMXcWixSiH3mJQ@mail.gmail.com \
--to=vapier@chromium.org \
--cc=alsa-devel@alsa-project.org \
--cc=dgreid@chromium.org \
--cc=manojgupta@chromium.org \
--cc=pmalani@chromium.org \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).