From 5954d4d2020a247d414c7e064a87f9464be85fcf Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 2 May 2012 22:00:02 +0200 Subject: * apt-pkg/pkgcachegen.cc: - check if NewDescription allocation has failed and error out accordingly --- apt-pkg/pkgcachegen.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'apt-pkg/pkgcachegen.cc') diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index ec072fddd..5e0726f3b 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -304,6 +304,9 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator void const * const oldMap = Map.Data(); map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, *LastDesc); + if (unlikely(descindex == 0 && _error->PendingError())) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewDescription", 1); if (oldMap != Map.Data()) LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; *LastDesc = descindex; @@ -456,6 +459,9 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator oldMap = Map.Data(); map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, *LastDesc); + if (unlikely(descindex == 0 && _error->PendingError())) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewDescription", 2); if (oldMap != Map.Data()) LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; *LastDesc = descindex; -- cgit v1.2.3-70-g09d2 From 7f5aab82708813d86aab04029095988f40a8462e Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 5 May 2012 02:06:49 +0200 Subject: check if we work on a valid description in IsDuplicateDescription as we end up working on dangling pointers otherwise which segfaults on s390x and ppc64 (Closes: #669427) --- apt-pkg/pkgcachegen.cc | 4 ++-- debian/changelog | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'apt-pkg/pkgcachegen.cc') diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 5e0726f3b..d455e4070 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -286,7 +286,7 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator pkgCache::DescIterator Desc = Ver.DescriptionList(); // a version can only have one md5 describing it - if (MD5SumValue(Desc.md5()) != CurMd5) + if (Desc.end() == true || MD5SumValue(Desc.md5()) != CurMd5) continue; // don't add a new description if we have one for the given @@ -1459,7 +1459,7 @@ bool IsDuplicateDescription(pkgCache::DescIterator Desc, MD5SumValue const &CurMd5, std::string const &CurLang) { // Descriptions in the same link-list have all the same md5 - if (MD5SumValue(Desc.md5()) != CurMd5) + if (Desc.end() == true || MD5SumValue(Desc.md5()) != CurMd5) return false; for (; Desc.end() == false; ++Desc) if (Desc.LanguageCode() == CurLang) diff --git a/debian/changelog b/debian/changelog index 72830ad91..2c4bde370 100644 --- a/debian/changelog +++ b/debian/changelog @@ -28,10 +28,13 @@ apt (0.9.3) unstable; urgency=low - use the correct library name the symbols header * apt-pkg/pkgcachegen.cc: - check if NewDescription allocation has failed and error out accordingly + - check if we work on a valid description in IsDuplicateDescription as + we end up working on dangling pointers otherwise which segfaults on + s390x and ppc64 (Closes: #669427) * apt-pkg/deb/deblistparser.cc: - check length and containing chars for a given description md5sum - -- David Kalnischkies Wed, 02 May 2012 22:28:32 +0200 + -- David Kalnischkies Sat, 05 May 2012 02:02:41 +0200 apt (0.9.2) unstable; urgency=low -- cgit v1.2.3-70-g09d2 From 606837654922b8c58c9ac8a12b44c30f308115e3 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 12 May 2012 00:11:07 +0200 Subject: * apt-pkg/pkgcachegen.cc: - make IsDuplicatedDescription static so that it is really private as we don't need a symbol for it as it is not in a header --- apt-pkg/pkgcachegen.cc | 4 ++-- debian/changelog | 9 +++++++++ debian/libapt-pkg4.12.symbols | 1 - 3 files changed, 11 insertions(+), 3 deletions(-) (limited to 'apt-pkg/pkgcachegen.cc') diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index d455e4070..538d10b35 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -38,7 +38,7 @@ typedef std::vector::iterator FileIterator; template std::vector pkgCacheGenerator::Dynamic::toReMap; -bool IsDuplicateDescription(pkgCache::DescIterator Desc, +static bool IsDuplicateDescription(pkgCache::DescIterator Desc, MD5SumValue const &CurMd5, std::string const &CurLang); using std::string; @@ -1455,7 +1455,7 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O } /*}}}*/ // IsDuplicateDescription /*{{{*/ -bool IsDuplicateDescription(pkgCache::DescIterator Desc, +static bool IsDuplicateDescription(pkgCache::DescIterator Desc, MD5SumValue const &CurMd5, std::string const &CurLang) { // Descriptions in the same link-list have all the same md5 diff --git a/debian/changelog b/debian/changelog index ba660b726..af63bec4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +apt (0.9.4) UNRELEASED; urgency=low + + [ David Kalnischkies ] + * apt-pkg/pkgcachegen.cc: + - make IsDuplicatedDescription static so that it is really private + as we don't need a symbol for it as it is not in a header + + -- David Kalnischkies Fri, 11 May 2012 23:26:59 +0200 + apt (0.9.3) unstable; urgency=low [ David Kalnischkies ] diff --git a/debian/libapt-pkg4.12.symbols b/debian/libapt-pkg4.12.symbols index 1abf22899..bf42e8b10 100644 --- a/debian/libapt-pkg4.12.symbols +++ b/debian/libapt-pkg4.12.symbols @@ -1530,4 +1530,3 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++|optional=private)"pkgCacheGenerator::MergeListVersion(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&, std::basic_string, std::allocator > const&, pkgCache::VerIterator*&)@Base" 0.8.16~exp7 (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator&, pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp7 (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7 - (c++|optional=internal)"IsDuplicateDescription(pkgCache::DescIterator, HashSumValue<128> const&, std::basic_string, std::allocator > const&)@Base" 0.8.16~exp7 -- cgit v1.2.3-70-g09d2 From 0952aee667274d8d7986bc2d03597fdc6bde9584 Mon Sep 17 00:00:00 2001 From: Daniel Hartwig Date: Thu, 14 Jun 2012 19:14:55 +0200 Subject: * apt-pkg/pkgcachegen.cc: - always reset _error->StackCount in MakeStatusCache (Closes: #677175) --- apt-pkg/pkgcachegen.cc | 5 +++-- debian/changelog | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'apt-pkg/pkgcachegen.cc') diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 538d10b35..f70cbd02a 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -1316,10 +1316,11 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress } _error->RevertToStack(); } - else if (Debug == true) + else { _error->MergeWithStack(); - std::clog << "Open filebased MMap" << std::endl; + if (Debug == true) + std::clog << "Open filebased MMap" << std::endl; } } if (Writeable == false || CacheFile.empty() == true) diff --git a/debian/changelog b/debian/changelog index ca49a7ace..69f4778f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,9 @@ apt (0.9.6.1) UNRELEASED; urgency=low + [ Daniel Hartwig ] + * apt-pkg/pkgcachegen.cc: + - always reset _error->StackCount in MakeStatusCache (Closes: #677175) + [ David Kalnischkies ] * apt-pkg/deb/deblistparser.cc: - ensure that mixed positive/negative architecture wildcards -- cgit v1.2.3-70-g09d2