[PATCH v2 2/5] shell32: Prevent user after free in error case (Coverity)

Fabian Maurer dark.shadow4 at web.de
Tue Apr 26 14:04:16 CDT 2022


Hello Nikolay,

this is what you meant, correct?

Regards,
Fabian Maurer

On Dienstag, 26. April 2022 21:03:19 CEST you wrote:
> Otherwise when hr is not SUCCEEDED we use array and free it again.
>
> Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
> ---
>  dlls/shell32/shellitem.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/dlls/shell32/shellitem.c b/dlls/shell32/shellitem.c
> index 0a3a76cbd6a..8e66c6ab31a 100644
> --- a/dlls/shell32/shellitem.c
> +++ b/dlls/shell32/shellitem.c
> @@ -1402,15 +1402,15 @@ HRESULT WINAPI
> SHCreateShellItemArrayFromIDLists(UINT cidl, if(SUCCEEDED(ret))
>      {
>          ret = create_shellitemarray(array, cidl, psia);
> -        heap_free(array);
> -        if(SUCCEEDED(ret))
> -            return ret;
>      }
>
> -    for(i = 0; i < cidl; i++)
> -        if(array[i]) IShellItem_Release(array[i]);
> +    if(FAILED(ret))
> +    {
> +        for(i = 0; i < cidl; i++)
> +            if(array[i]) IShellItem_Release(array[i]);
> +        *psia = NULL;
> +    }
>      heap_free(array);
> -    *psia = NULL;
>      return ret;
>  }
>
> --
> 2.36.0







More information about the wine-devel mailing list