[PATCH] wintrust: fixed some memory leaks (Coverity)
Marcus Meissner
marcus at jet.franken.de
Sun Sep 29 07:17:45 CDT 2013
1099491 Resource leak
---
dlls/wintrust/crypt.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/dlls/wintrust/crypt.c b/dlls/wintrust/crypt.c
index 341f45b..0ed45d3 100644
--- a/dlls/wintrust/crypt.c
+++ b/dlls/wintrust/crypt.c
@@ -909,6 +909,7 @@ HANDLE WINAPI CryptCATOpen(LPWSTR pwszFileName, DWORD fdwOpenFlags, HCRYPTPROV h
if (!CryptMsgGetParam(hmsg, CMSG_ATTR_CERT_PARAM, i, NULL, &size))
{
CryptMsgClose(hmsg);
+ HeapFree(GetProcessHeap(), 0, cc);
return INVALID_HANDLE_VALUE;
}
sum += size;
@@ -916,6 +917,7 @@ HANDLE WINAPI CryptCATOpen(LPWSTR pwszFileName, DWORD fdwOpenFlags, HCRYPTPROV h
if (!(cc->attr = HeapAlloc(GetProcessHeap(), 0, sizeof(*cc->attr) * cc->attr_count + sum)))
{
CryptMsgClose(hmsg);
+ HeapFree(GetProcessHeap(), 0, cc);
SetLastError(ERROR_OUTOFMEMORY);
return INVALID_HANDLE_VALUE;
}
@@ -926,12 +928,14 @@ HANDLE WINAPI CryptCATOpen(LPWSTR pwszFileName, DWORD fdwOpenFlags, HCRYPTPROV h
{
CryptMsgClose(hmsg);
HeapFree(GetProcessHeap(), 0, cc->attr);
+ HeapFree(GetProcessHeap(), 0, cc);
return INVALID_HANDLE_VALUE;
}
if (!CryptMsgGetParam(hmsg, CMSG_ATTR_CERT_PARAM, i, p, &size))
{
CryptMsgClose(hmsg);
HeapFree(GetProcessHeap(), 0, cc->attr);
+ HeapFree(GetProcessHeap(), 0, cc);
return INVALID_HANDLE_VALUE;
}
p += size;
@@ -948,6 +952,7 @@ HANDLE WINAPI CryptCATOpen(LPWSTR pwszFileName, DWORD fdwOpenFlags, HCRYPTPROV h
cc->magic = CRYPTCAT_MAGIC;
return cc;
}
+ HeapFree(GetProcessHeap(), 0, cc);
return INVALID_HANDLE_VALUE;
}
--
1.7.10.4
More information about the wine-patches
mailing list