Lei Zhang : secur32: Fix memory leak in SECUR32_addPackages.

Alexandre Julliard julliard at winehq.org
Thu Dec 17 10:37:09 CST 2009


Module: wine
Branch: master
Commit: c89211336b9e4309d18819f241e0f77ff882a56e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c89211336b9e4309d18819f241e0f77ff882a56e

Author: Lei Zhang <thestig at google.com>
Date:   Thu Dec 17 01:53:38 2009 -0800

secur32: Fix memory leak in SECUR32_addPackages.

---

 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);




More information about the wine-cvs mailing list