Re: [PATCH] secur32: Fix memory leak in SECUR32_addPackages. (valgrind)
On Wed, Dec 16, 2009 at 5:07 PM, Lei Zhang <thestig(a)google.com> wrote:
Hi, this is for bug 21045.
+ 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); I believe the construct you're looking for is LIST_FOR_EACH_SAFE. grep through the code for examples on using that to safely free and remove elements from a list. -- James Hawkins
On Wed, Dec 16, 2009 at 5:13 PM, James Hawkins <truiken(a)gmail.com> wrote:
On Wed, Dec 16, 2009 at 5:07 PM, Lei Zhang <thestig(a)google.com> wrote:
Hi, this is for bug 21045.
+ 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);
I believe the construct you're looking for is LIST_FOR_EACH_SAFE. grep through the code for examples on using that to safely free and remove elements from a list.
LIST_FOR_EACH_ENTRY_SAFE, actually. Thanks.
participants (2)
-
James Hawkins -
Lei Zhang