]> git.alsa-project.org Git - alsa-lib.git/commit
seq: Fix signedness in MIDI encoder/decoder
authorTakashi Iwai <tiwai@suse.de>
Thu, 23 Aug 2018 06:34:37 +0000 (08:34 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 23 Aug 2018 06:34:37 +0000 (08:34 +0200)
commit7c5c0500903e0064a162f69ef26a39d0599e9466
treecde2b2471a4cef88f0137a61314cabbd08c83d15
parenta84916364c1884ba07f5ae5a871b6995e49d6f9a
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