[PATCH] secur32: Fix memory leak in SECUR32_addPackages. (valgrind)

Lei Zhang thestig at google.com
Wed Dec 16 19:07:36 CST 2009


Hi, this is for bug 21045.
-------------- next part --------------
From eefba48e1bfd0f8e609e5cf7d1d138f3d29d34d2 Mon Sep 17 00:00:00 2001
From: Lei Zhang <thestig at google.com>
Date: Wed, 16 Dec 2009 17:05:13 -0800
Subject: [PATCH] secur32: Fix memory leak in SECUR32_addPackages. (valgrind)

---
 dlls/secur32/secur32.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/dlls/secur32/secur32.c b/dlls/secur32/secur32.c
index 4171778..18f3ce0 100644
--- a/dlls/secur32/secur32.c
+++ b/dlls/secur32/secur32.c
@@ -676,11 +676,17 @@ static void SECUR32_freeProviders(void)
 
     if (packageTable)
     {
+        SecurePackage *prev_package = NULL;
         LIST_FOR_EACH_ENTRY(package, &packageTable->table, SecurePackage, entry)
         {
+            if (prev_package)
+                HeapFree(GetProcessHeap(), 0, prev_package);
+            prev_package = package;
             HeapFree(GetProcessHeap(), 0, package->infoW.Name);
             HeapFree(GetProcessHeap(), 0, package->infoW.Comment);
         }
+        if (prev_package)
+            HeapFree(GetProcessHeap(), 0, prev_package);
 
         HeapFree(GetProcessHeap(), 0, packageTable);
         packageTable = NULL;
@@ -688,12 +694,18 @@ static void SECUR32_freeProviders(void)
 
     if (providerTable)
     {
+        SecureProvider *prev_provider = NULL;
         LIST_FOR_EACH_ENTRY(provider, &providerTable->table, SecureProvider, entry)
         {
+            if (prev_provider)
+                HeapFree(GetProcessHeap(), 0, prev_provider);
+            prev_provider = provider;
             HeapFree(GetProcessHeap(), 0, provider->moduleName);
             if (provider->lib)
                 FreeLibrary(provider->lib);
         }
+        if (prev_provider)
+            HeapFree(GetProcessHeap(), 0, prev_provider);
 
         HeapFree(GetProcessHeap(), 0, providerTable);
         providerTable = NULL;
-- 
1.5.4.3


More information about the wine-patches mailing list