[PATCH] msadpm: Stop decoding instead of crashing for invalid adpcm data.

Moore, Brandon A. moore.3071 at buckeyemail.osu.edu
Fri Apr 29 19:44:53 CDT 2022


Apply the same patch from 72528be84fdc for adpcm data sent to mono
destinations in addition to stereo destinations.

Signed-off-by: Brandon Moore <moore.3071 at osu.edu>
---
 dlls/msadp32.acm/msadp32.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dlls/msadp32.acm/msadp32.c b/dlls/msadp32.acm/msadp32.c
index 2dc11b9239a..a68b13d58f6 100644
--- a/dlls/msadp32.acm/msadp32.c
+++ b/dlls/msadp32.acm/msadp32.c
@@ -319,7 +319,14 @@ static     void cvtMMms16K(const ACMDRVSTREAMINSTANCE *adsi,
     {
         const unsigned char*    in_src = src;

-        assert(*src <= 6);
+       /* Catch a problem from Lord of the Rings War of the Ring where it
+        * passes invalid data. */
+       if (*src > 6 || *(src + 1) > 6)
+       {
+               *ndst -= nblock * nsamp_blk * adsi->pwfxDst->nBlockAlign;
+               WARN("Invalid ADPCM data, stopping conversion\n");
+               break;
+       }
         coeff = MSADPCM_CoeffSet[*src++];

         idelta =  R16(src);     src += 2;
-- 
2.35.1



More information about the wine-devel mailing list