secur32: Fix memory leak in SECUR32_addPackages. (valgrind) [try 2]
Lei Zhang
thestig at google.com
Thu Dec 17 03:57:05 CST 2009
Hi, this is for bug 21045. I'm using the LIST_FOR_EACH_ENTRY_SAFE
macro and removed the if (pointer != NULL) check before HeapFree().
-------------- next part --------------
From fcc6ef29cb2fc99a71e1703a1927e5bd9e60c920 Mon Sep 17 00:00:00 2001
From: Lei Zhang <thestig at google.com>
Date: Thu, 17 Dec 2009 01:53:38 -0800
Subject: [PATCH] secur32: Fix memory leak in SECUR32_addPackages. (valgrind)
---
dlls/secur32/secur32.c | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/secur32/secur32.c b/dlls/secur32/secur32.c
index 4171778..f626617 100644
--- a/dlls/secur32/secur32.c
+++ b/dlls/secur32/secur32.c
@@ -666,9 +666,6 @@ SecurePackage *SECUR32_findPackageA(PCSTR packageName)
static void SECUR32_freeProviders(void)
{
- SecurePackage *package;
- SecureProvider *provider;
-
TRACE("\n");
EnterCriticalSection(&cs);
@@ -676,10 +673,13 @@ static void SECUR32_freeProviders(void)
if (packageTable)
{
- LIST_FOR_EACH_ENTRY(package, &packageTable->table, SecurePackage, entry)
+ SecurePackage *package, *package_next;
+ LIST_FOR_EACH_ENTRY_SAFE(package, package_next, &packageTable->table,
+ SecurePackage, entry)
{
HeapFree(GetProcessHeap(), 0, package->infoW.Name);
HeapFree(GetProcessHeap(), 0, package->infoW.Comment);
+ HeapFree(GetProcessHeap(), 0, package);
}
HeapFree(GetProcessHeap(), 0, packageTable);
@@ -688,11 +688,14 @@ static void SECUR32_freeProviders(void)
if (providerTable)
{
- LIST_FOR_EACH_ENTRY(provider, &providerTable->table, SecureProvider, entry)
+ SecureProvider *provider, *provider_next;
+ LIST_FOR_EACH_ENTRY_SAFE(provider, provider_next, &providerTable->table,
+ SecureProvider, entry)
{
HeapFree(GetProcessHeap(), 0, provider->moduleName);
if (provider->lib)
FreeLibrary(provider->lib);
+ HeapFree(GetProcessHeap(), 0, provider);
}
HeapFree(GetProcessHeap(), 0, providerTable);
--
1.5.4.3
More information about the wine-patches
mailing list