[PATCH] ole32: Fix STGMEDIUM* is NULL Invalid reference.

Zhiyi Zhang zzhang at codeweavers.com
Mon Sep 21 01:30:38 CDT 2020


Hi Chao,

It is better and easier to add and use tests to demonstrate the bug. The winedbg log doesn't guarantee
ReleaseStgMedium() should check for NULL pointers.  Also the email subject can be changed to
"[PATCH] ole32: Check invalid parameters for ReleaseStgMedium()." . And mention what application needs
this if you don't mind.

Thanks,
Zhiyi

On 9/21/20 1:50 PM, Chao Long wrote:
> Wine-dbg>disas ReleaseStgMedium
> 0x7e240b48 ReleaseStgMedium [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: lea ecx, [esp+0x4] 
> 0x7e240b4c ReleaseStgMedium+0x4 [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: and esp, 0xfffffff0 
> 0x7e240b4f ReleaseStgMedium+0x7 [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: push dword [ecx-0x4] 
> 0x7e240b52 ReleaseStgMedium+0xa [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: push ebp 
> 0x7e240b53 ReleaseStgMedium+0xb [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: mov ebp, esp 
> 0x7e240b55 ReleaseStgMedium+0xd [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: push ebx 
> 0x7e240b56 ReleaseStgMedium+0xe [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: push ecx 
> 0x7e240b57 ReleaseStgMedium+0xf [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: sub esp, 0x10 
> 0x7e240b5a ReleaseStgMedium+0x12 [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32: mov ebx, ecx
>
> Wine-dbg>info regs
> Register dump:
>  CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
>  EIP:7e240b48 ESP:00300b68 EBP:00300b74 EFLAGS:00000202(   - --  I   - - - )
>  EAX:1b690930 EBX:098b6178 ECX:13cd8044 EDX:1b686001
>  ESI:13cd8040 EDI:090fcdd4
>
> Wine-dbg>x 0x00300b6c
>  0x00000000
>
> Wine-dbg>info break
> Breakpoints:
> 1: y 0x7e240b48 ReleaseStgMedium [Z:\home\deepin\maintain5.0-stable\deepin-wine\dlls\ole32\ole2.c:2065] in ole32 (1)
> No watchpoints
>
>
> 0001-ole32-Fix-STGMEDIUM-is-NULL-Invalid-reference.patch
>
> From 8f96278e5f603d4c465d4d197bc03f1d6143fdbe Mon Sep 17 00:00:00 2001
> From: Chao Long <longchao at uniontech.com>
> Date: Mon, 21 Sep 2020 13:02:03 +0800
> Subject: [PATCH] ole32: Fix STGMEDIUM* is NULL Invalid reference.
>
> Signed-off-by: Chao Long <longchao at uniontech.com>
> ---
>  dlls/ole32/ole2.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c
> index 15c4f8234f..4464ba0714 100644
> --- a/dlls/ole32/ole2.c
> +++ b/dlls/ole32/ole2.c
> @@ -2023,6 +2023,8 @@ found:
>  void WINAPI ReleaseStgMedium(
>    STGMEDIUM* pmedium)
>  {
> +  if (!pmedium) return;
> +
>    switch (pmedium->tymed)
>    {
>      case TYMED_HGLOBAL:

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20200921/ea1571a9/attachment-0001.htm>


More information about the wine-devel mailing list