SCUMM: Verify sample width in Digital iMUSE callback. CID 1002112

Verify that 'bits' really is one of 8, 12 or 16 before decoding
the data. It's probably always the case (unless the data files are
damaged) but if it isn't we'll either try to queue NULL to the
audio stream, or queue the same buffer more than once, or free the
buffer more than once. All of which are bad, though Coverity only
noticed the last of these cases.
This commit is contained in:
Torbjörn Andersson 2013-06-04 06:11:41 +02:00
parent 1cc0e9cb88
commit 08be916049

View File

@ -275,9 +275,12 @@ void IMuseDigital::callback() {
feedSize &= ~1;
if (channels == 2)
feedSize &= ~3;
} else {
} else if (bits == 8) {
if (channels == 2)
feedSize &= ~1;
} else {
warning("IMuseDigita::callback: Unexpected sample width, %d bits", bits);
continue;
}
if (feedSize == 0)