[PATCH v2] scrobj: Fix some leaks on error paths (Coverity).

Sven Baars sven.wine at gmail.com
Mon Oct 21 07:18:25 CDT 2019


Signed-off-by: Sven Baars <sven.wine at gmail.com>
---
 dlls/scrobj/scrobj.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/scrobj/scrobj.c b/dlls/scrobj/scrobj.c
index ce5a3dedd1..1d37864039 100644
--- a/dlls/scrobj/scrobj.c
+++ b/dlls/scrobj/scrobj.c
@@ -1491,6 +1491,7 @@ static HRESULT parse_scriptlet_public(struct scriptlet_factory *factory)
             if (!wcsicmp(member_iter->name, member->name))
             {
                 FIXME("Duplicated member %s\n", debugstr_w(member->name));
+                heap_free(member);
                 return E_FAIL;
             }
         }
@@ -1529,11 +1530,11 @@ static HRESULT parse_scriptlet_public(struct scriptlet_factory *factory)
                     return E_FAIL;
                 }
 
-                if (!(parameter = heap_alloc(sizeof(*parameter)))) return E_OUTOFMEMORY;
+                if (!(parameter = heap_alloc_zero(sizeof(*parameter)))) return E_OUTOFMEMORY;
+                list_add_tail(&member->u.parameters, &parameter->entry);
 
                 hres = read_xml_value(factory, &parameter->name);
                 if (FAILED(hres)) return hres;
-                list_add_tail(&member->u.parameters, &parameter->entry);
                 if (!empty && FAILED(hres = expect_end_element(factory))) return hres;
             }
             break;
-- 
2.17.1




More information about the wine-devel mailing list