[PATCH] advapi32: remove a double free (Coverity)
Marcus Meissner
marcus at jet.franken.de
Wed Oct 3 10:06:42 CDT 2012
Hi,
CID 713996
*pszTypeName could be freed twice if some condition was not met.
Ciao, Marcus
---
dlls/advapi32/tests/crypt.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c
index 779d573..c85e86b 100644
--- a/dlls/advapi32/tests/crypt.c
+++ b/dlls/advapi32/tests/crypt.c
@@ -628,9 +628,6 @@ static BOOL FindProvTypesRegVals(DWORD *pdwIndex, DWORD *pdwProvType, LPSTR *psz
(*pdwIndex)++;
}
-
- if (!ret)
- LocalFree(*pszTypeName);
RegCloseKey(hSubKey);
LocalFree(szName);
@@ -837,8 +834,10 @@ static void test_get_default_provider(void)
/* alloc provName to half the size required
* cbProvName holds the size required */
provNameSize = cbProvName / 2;
- if (!(provName = LocalAlloc(LMEM_ZEROINIT, provNameSize)))
+ if (!(provName = LocalAlloc(LMEM_ZEROINIT, provNameSize))) {
+ LocalFree(pszProvName);
return;
+ }
result = pCryptGetDefaultProviderA(provType, NULL, flags, provName, &provNameSize);
ok(!result && GetLastError()==ERROR_MORE_DATA, "expected %i, got %d\n",
@@ -851,8 +850,10 @@ static void test_get_default_provider(void)
ok(result && provNameSize==cbProvName, "expected %d, got %d\n", cbProvName, provNameSize);
provNameSize = cbProvName;
- if (!(provName = LocalAlloc(LMEM_ZEROINIT, provNameSize)))
+ if (!(provName = LocalAlloc(LMEM_ZEROINIT, provNameSize))) {
+ LocalFree(pszProvName);
return;
+ }
provNameSize = 0xdeadbeef;
result = pCryptGetDefaultProviderA(provType, NULL, flags, provName, &provNameSize);
--
1.7.3.4
More information about the wine-patches
mailing list