X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/e7b470eefa0499d0edbdda4f466eb77b17c2067b..7d6f9f8ffb7ba9caf7cc25dc102c59616150f36e:/apt-pkg/pkgcachegen.cc diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 031f9b807..534217e9e 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: pkgcachegen.cc,v 1.48 2001/05/27 05:36:04 jgg Exp $ +// $Id: pkgcachegen.cc,v 1.50 2001/07/01 22:28:24 jgg Exp $ /* ###################################################################### Package Cache Generator - Generator for the cache structure. @@ -134,8 +134,7 @@ bool pkgCacheGenerator::MergeList(ListParser &List, int Res = 1; for (; Ver.end() == false; Last = &Ver->NextVer, Ver++) { - Res = Cache.VS->DoCmpVersion(Version.c_str(),Version.c_str()+Version.length(),Ver.VerStr(), - Ver.VerStr() + strlen(Ver.VerStr())); + Res = Cache.VS->CmpVersion(Version,Ver.VerStr()); if (Res >= 0) break; } @@ -166,8 +165,7 @@ bool pkgCacheGenerator::MergeList(ListParser &List, { for (; Ver.end() == false; Last = &Ver->NextVer, Ver++) { - Res = Cache.VS->DoCmpVersion(Version.c_str(),Version.c_str()+Version.length(),Ver.VerStr(), - Ver.VerStr() + strlen(Ver.VerStr())); + Res = Cache.VS->CmpVersion(Version,Ver.VerStr()); if (Res != 0) break; } @@ -194,6 +192,15 @@ bool pkgCacheGenerator::MergeList(ListParser &List, } } + if (Cache.HeaderP->PackageCount >= (1ULL<ID)*8)-1) + return _error->Error(_("Wow, you exceeded the number of package " + "names this APT is capable of.")); + if (Cache.HeaderP->VersionCount >= (1ULL<<(sizeof(Cache.VerP->ID)*8))-1) + return _error->Error(_("Wow, you exceeded the number of versions " + "this APT is capable of.")); + if (Cache.HeaderP->DependsCount >= (1ULL<<(sizeof(Cache.DepP->ID)*8))-1ULL) + return _error->Error(_("Wow, you exceeded the number of dependencies " + "this APT is capable of.")); return true; } /*}}}*/