From: <sv...@op...> - 2024-06-08 14:09:13
|
Author: sagamusix Date: Sat Jun 8 16:09:02 2024 New Revision: 20964 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20964 Log: Merged revision(s) 20960 from trunk/OpenMPT: [Fix] MO3: Don't try to load comrpessed samples if the header says that it's a 0-length sample anyway. This may cause a sample buffer to be allocated and its size be reduced to 0, which is an API violation (see assertion in ModSample::HasSampleData()). Found with afl++. ........ Modified: branches/OpenMPT-1.28/ (props changed) branches/OpenMPT-1.28/soundlib/Load_mo3.cpp Modified: branches/OpenMPT-1.28/soundlib/Load_mo3.cpp ============================================================================== --- branches/OpenMPT-1.28/soundlib/Load_mo3.cpp Sat Jun 8 16:08:14 2024 (r20963) +++ branches/OpenMPT-1.28/soundlib/Load_mo3.cpp Sat Jun 8 16:09:02 2024 (r20964) @@ -1346,6 +1346,8 @@ if(smpHeader.flags & MO3Sample::smpStereo) sample.uFlags.set(CHN_STEREO); FileReader sampleData = file.ReadChunk(smpHeader.compressedSize); + if(!smpHeader.length) + continue; const uint8 numChannels = sample.GetNumChannels(); if(compression == MO3Sample::smpDeltaCompression || compression == MO3Sample::smpDeltaPrediction) |