[PATCH v2] msadpm: Stop decoding instead of crashing for invalid adpcm data.
Andrew Eikum
aeikum at codeweavers.com
Mon May 23 09:17:05 CDT 2022
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Sun, May 08, 2022 at 10:40:30PM +0000, Moore, Brandon A. wrote:
> From 68bf9407a3f2ecbd34801e478ae4e0ad74dd68b1 Mon Sep 17 00:00:00 2001
> From: Brandon Moore <moore.3071 at osu.edu>
> Date: Fri, 29 Apr 2022 16:50:55 -0700
> Subject: [PATCH v2] msadpm: Stop decoding instead of crashing for invalid adpcm
> data.
>
> 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..b31f6371a7a 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)
> + {
> + *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