From: Jonathan Thomas Date: Sat, 10 Nov 2012 13:25:45 +0000 (+0100) Subject: * apt-pkg/algorithms.cc: X-Git-Tag: 0.9.7.7~1^2 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/0291f6459b0a8de04268225cc0c88d340ba48653?hp=--cc * apt-pkg/algorithms.cc: - fix package-pointer array memory leak in ResolveByKeepInternal() --- 0291f6459b0a8de04268225cc0c88d340ba48653 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