From 0291f6459b0a8de04268225cc0c88d340ba48653 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Sat, 10 Nov 2012 14:25:45 +0100 Subject: * apt-pkg/algorithms.cc: - fix package-pointer array memory leak in ResolveByKeepInternal() --- apt-pkg/algorithms.cc | 12 +++++++++--- debian/changelog | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index b611df172..8cd9d4c6e 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -1419,12 +1419,18 @@ bool pkgProblemResolver::ResolveByKeepInternal() continue; // Restart again. - if (K == LastStop) - return _error->Error("Internal Error, pkgProblemResolver::ResolveByKeep is looping on package %s.",I.FullName(false).c_str()); + if (K == LastStop) { + // I is an iterator based off our temporary package list, + // so copy the name we need before deleting the temporary list + std::string const LoopingPackage = I.FullName(false); + delete[] PList; + return _error->Error("Internal Error, pkgProblemResolver::ResolveByKeep is looping on package %s.", LoopingPackage.c_str()); + } LastStop = K; K = PList - 1; - } + } + delete[] PList; return true; } /*}}}*/ diff --git a/debian/changelog b/debian/changelog index ddbc8de89..e2b0d753e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -21,6 +21,10 @@ apt (0.9.7.7) UNRELEASED; urgency=low - ensure pkgProblemResolver calls MarkDelete without FromUser set so that it can't overrule holds and the protection flag + [ Jonathan Thomas ] + * apt-pkg/algorithms.cc: + - fix package-pointer array memory leak in ResolveByKeepInternal() + -- Jordi Mallach Thu, 18 Oct 2012 23:30:46 +0200 apt (0.9.7.6) unstable; urgency=low -- cgit v1.2.3