mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 06:39:17 +00:00
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:
parent
1cc0e9cb88
commit
08be916049
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user