diff options
-rw-r--r-- | apt-pkg/cachefilter.cc | 4 | ||||
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 17 | ||||
-rw-r--r-- | apt-pkg/packagemanager.cc | 3 | ||||
-rw-r--r-- | apt-pkg/pkgcachegen.cc | 10 | ||||
-rw-r--r-- | cmdline/apt-extracttemplates.cc | 6 | ||||
-rw-r--r-- | cmdline/apt-internal-solver.cc | 7 | ||||
-rw-r--r-- | debian/changelog | 12 | ||||
-rw-r--r-- | debian/libapt-inst1.5.symbols | 2 | ||||
-rw-r--r-- | ftparchive/cachedb.cc | 5 | ||||
-rw-r--r-- | ftparchive/contents.cc | 4 | ||||
-rw-r--r-- | ftparchive/override.cc | 3 | ||||
-rwxr-xr-x | prepare-release | 17 | ||||
-rw-r--r-- | test/libapt/hashsums_test.cc | 22 |
13 files changed, 91 insertions, 21 deletions
diff --git a/apt-pkg/cachefilter.cc b/apt-pkg/cachefilter.cc index 9ec3fa699..fb444208c 100644 --- a/apt-pkg/cachefilter.cc +++ b/apt-pkg/cachefilter.cc @@ -10,11 +10,11 @@ #include <apt-pkg/error.h> #include <apt-pkg/pkgcache.h> -#include <apti18n.h> - #include <string> #include <regex.h> + +#include <apti18n.h> /*}}}*/ namespace APT { namespace CacheFilter { diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 00e2bd900..7bef6772c 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -215,15 +215,22 @@ string debListParser::DescriptionLanguage() */ MD5SumValue debListParser::Description_md5() { - string value = Section.FindS("Description-md5"); - - if (value.empty()) + string const value = Section.FindS("Description-md5"); + if (value.empty() == true) { MD5Summation md5; md5.Add((Description() + "\n").c_str()); return md5.Result(); - } else - return MD5SumValue(value); + } + else if (likely(value.size() == 32)) + { + if (likely(value.find_first_not_of("0123456789abcdefABCDEF") == string::npos)) + return MD5SumValue(value); + _error->Error("Malformed Description-md5 line; includes invalid character '%s'", value.c_str()); + return MD5SumValue(); + } + _error->Error("Malformed Description-md5 line; doesn't have the required length (32 != %d) '%s'", (int)value.size(), value.c_str()); + return MD5SumValue(); } /*}}}*/ // ListParser::UsePackage - Update a package structure /*{{{*/ diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index b56619ef5..06151a165 100644 --- a/apt-pkg/packagemanager.cc +++ b/apt-pkg/packagemanager.cc @@ -25,9 +25,10 @@ #include <apt-pkg/configuration.h> #include <apt-pkg/sptr.h> -#include <apti18n.h> #include <iostream> #include <fcntl.h> + +#include <apti18n.h> /*}}}*/ using namespace std; diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index ec072fddd..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 @@ -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; @@ -1453,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/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc index 60efafba5..8fe15fdf9 100644 --- a/cmdline/apt-extracttemplates.cc +++ b/cmdline/apt-extracttemplates.cc @@ -36,11 +36,13 @@ #include <string.h> #include <stdlib.h> #include <unistd.h> +#include <locale.h> + #include <fstream> -#include <locale.h> -#include <apti18n.h> #include "apt-extracttemplates.h" + +#include <apti18n.h> /*}}}*/ using namespace std; diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index 25ecb7af1..e7faf88a9 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -7,6 +7,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/error.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/init.h> @@ -18,11 +20,10 @@ #include <apt-pkg/fileutl.h> #include <apt-pkg/pkgsystem.h> -#include <config.h> -#include <apti18n.h> - #include <unistd.h> #include <cstdio> + +#include <apti18n.h> /*}}}*/ // ShowHelp - Show a help screen /*{{{*/ diff --git a/debian/changelog b/debian/changelog index 34d6991b5..8eec902d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -24,8 +24,18 @@ apt (0.9.3) unstable; urgency=low * edsp/edspsystem.cc: - check with RealFileExists for scenario file as otherwise a directory like one provided with RootDir triggers the usage of EDSP + * debian/libapt-inst1.5.symbols: + - 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 + * ensure that apti18n.h is included last as advertised (Closes: #671623) - -- David Kalnischkies <kalnischkies@gmail.com> Mon, 23 Apr 2012 22:02:58 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Sat, 05 May 2012 15:35:16 +0200 apt (0.9.2) unstable; urgency=low diff --git a/debian/libapt-inst1.5.symbols b/debian/libapt-inst1.5.symbols index cade0990d..8fcd29a3e 100644 --- a/debian/libapt-inst1.5.symbols +++ b/debian/libapt-inst1.5.symbols @@ -1,4 +1,4 @@ -libapt-inst.so.1.4 libapt-inst1.4 #MINVER# +libapt-inst.so.1.5 libapt-inst1.5 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index a8b637a80..c2318bf53 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -19,11 +19,12 @@ #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> #include <apt-pkg/fileutl.h> - + #include <netinet/in.h> // htonl, etc -#include <apti18n.h> #include "cachedb.h" + +#include <apti18n.h> /*}}}*/ // CacheDB::ReadyDB - Ready the DB2 /*{{{*/ diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc index bbc5a1e2b..015c790e0 100644 --- a/ftparchive/contents.cc +++ b/ftparchive/contents.cc @@ -38,13 +38,15 @@ #include <apt-pkg/debfile.h> #include <apt-pkg/extracttar.h> #include <apt-pkg/error.h> + #include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> -#include <apti18n.h> #include "contents.h" + +#include <apti18n.h> /*}}}*/ // GenContents::~GenContents - Free allocated memory /*{{{*/ diff --git a/ftparchive/override.cc b/ftparchive/override.cc index d363fd0fe..760c20120 100644 --- a/ftparchive/override.cc +++ b/ftparchive/override.cc @@ -12,13 +12,14 @@ // Include Files /*{{{*/ #include <config.h> -#include <apti18n.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <stdio.h> #include "override.h" + +#include <apti18n.h> /*}}}*/ // Override::ReadOverride - Read the override file /*{{{*/ diff --git a/prepare-release b/prepare-release index e02157b24..fd98c489f 100755 --- a/prepare-release +++ b/prepare-release @@ -4,6 +4,23 @@ VERSION=$(dpkg-parsechangelog | sed -n -e '/^Version:/s/^Version: //p') DISTRIBUTION=$(dpkg-parsechangelog | sed -n -e '/^Distribution:/s/^Distribution: //p') if [ "$1" = 'pre-export' ]; then + libraryversioncheck() { + LIBRARY="$1" + VERSION="$2" + if [ ! -e "debian/${LIBRARY}${VERSION}.symbols" ]; then + echo >&2 "Library ${LIBRARY} in version ${VERSION} has no symbols file! (maybe forgot to rename?)" + exit 1 + fi + if [ "$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")" != "${LIBRARY}.so.${VERSION} ${LIBRARY}${VERSION} #MINVER#" ]; then + echo >&2 "Library ${LIBRARY}${VERSION} has incorrect version in symbol header! (»$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")«)" + exit 2 + fi + } + + libraryversioncheck 'libapt-pkg' "$(awk -v ORS='.' '/^\#define APT_PKG_M/ {print $3}' apt-pkg/init.h | sed 's/\.$//')" + libraryversioncheck 'libapt-inst' "$(egrep '^MAJOR=' apt-inst/makefile |cut -d '=' -f 2)" + + if [ "$DISTRIBUTION" = 'sid' ]; then echo >&2 '»sid« is not a valid distribution. Replace it with »unstable« for you' sed -i -e 's/) sid; urgency=/) unstable; urgency=/' debian/changelog diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc index 396e4cf6b..e2d0aec5b 100644 --- a/test/libapt/hashsums_test.cc +++ b/test/libapt/hashsums_test.cc @@ -42,6 +42,28 @@ template <class T> void TestMill(const char *Out) int main(int argc, char** argv) { + // test HashSumValue which doesn't calculate but just stores sums + { + string md5sum = argv[2]; + MD5SumValue md5(md5sum); + equals(md5.Value(), md5sum); + } + { + string sha1sum = argv[3]; + SHA1SumValue sha1(sha1sum); + equals(sha1.Value(), sha1sum); + } + { + string sha2sum = argv[4]; + SHA256SumValue sha2(sha2sum); + equals(sha2.Value(), sha2sum); + } + { + string sha2sum = argv[5]; + SHA512SumValue sha2(sha2sum); + equals(sha2.Value(), sha2sum); + } + // From FIPS PUB 180-1 Test<SHA1Summation>("","da39a3ee5e6b4b0d3255bfef95601890afd80709"); Test<SHA1Summation>("abc","a9993e364706816aba3e25717850c26c9cd0d89d"); |