[PATCH v2 2/5] shell32: Prevent user after free in error case (Coverity)
Fabian Maurer
dark.shadow4 at web.de
Tue Apr 26 14:03:19 CDT 2022
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