summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/acquire-item.cc45
-rw-r--r--apt-pkg/metaindex.cc26
-rwxr-xr-xtest/integration/test-bug-841874-warning-for-mismatching-distribution11
3 files changed, 37 insertions, 45 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 163743ce0..54cb9db71 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -1561,24 +1561,6 @@ void pkgAcqMetaClearSig::QueueIndexes(bool const verify) /*{{{*/
/*}}}*/
bool pkgAcqMetaBase::VerifyVendor(string const &) /*{{{*/
{
- string Transformed = TransactionManager->MetaIndexParser->GetExpectedDist();
-
- if (Transformed == "../project/experimental")
- {
- Transformed = "experimental";
- }
-
- auto pos = Transformed.rfind('/');
- if (pos != string::npos)
- {
- Transformed = Transformed.substr(0, pos);
- }
-
- if (Transformed == ".")
- {
- Transformed = "";
- }
-
if (TransactionManager->MetaIndexParser->GetValidUntil() > 0)
{
time_t const invalid_since = time(NULL) - TransactionManager->MetaIndexParser->GetValidUntil();
@@ -1613,30 +1595,19 @@ bool pkgAcqMetaBase::VerifyVendor(string const &) /*{{{*/
TransactionManager->LastMetaIndexParser = NULL;
}
- if (_config->FindB("Debug::pkgAcquire::Auth", false))
+ if (_config->FindB("Debug::pkgAcquire::Auth", false))
{
std::cerr << "Got Codename: " << TransactionManager->MetaIndexParser->GetCodename() << std::endl;
+ std::cerr << "Got Suite: " << TransactionManager->MetaIndexParser->GetSuite() << std::endl;
std::cerr << "Expecting Dist: " << TransactionManager->MetaIndexParser->GetExpectedDist() << std::endl;
- std::cerr << "Transformed Dist: " << Transformed << std::endl;
- }
-
- if (TransactionManager->MetaIndexParser->CheckDist(Transformed) == false)
- {
- // This might become fatal one day
-// Status = StatAuthError;
-// ErrorText = "Conflicting distribution; expected "
-// + MetaIndexParser->GetExpectedDist() + " but got "
-// + MetaIndexParser->GetCodename();
-// return false;
- if (!Transformed.empty())
- {
- _error->Warning(_("Conflicting distribution: %s (expected %s but got %s)"),
- Desc.Description.c_str(),
- Transformed.c_str(),
- TransactionManager->MetaIndexParser->GetCodename().c_str());
- }
}
+ // One day that might become fatal…
+ auto const ExpectedDist = TransactionManager->MetaIndexParser->GetExpectedDist();
+ auto const NowCodename = TransactionManager->MetaIndexParser->GetCodename();
+ if (TransactionManager->MetaIndexParser->CheckDist(ExpectedDist) == false)
+ _error->Warning(_("Conflicting distribution: %s (expected %s but got %s)"),
+ Desc.Description.c_str(), ExpectedDist.c_str(), NowCodename.c_str());
return true;
}
/*}}}*/
diff --git a/apt-pkg/metaindex.cc b/apt-pkg/metaindex.cc
index 281824855..8b31051fb 100644
--- a/apt-pkg/metaindex.cc
+++ b/apt-pkg/metaindex.cc
@@ -57,15 +57,25 @@ APT_PURE bool metaIndex::GetSupportsAcquireByHash() const { return SupportsAcqui
APT_PURE time_t metaIndex::GetValidUntil() const { return ValidUntil; }
APT_PURE time_t metaIndex::GetDate() const { return this->Date; }
APT_PURE metaIndex::TriState metaIndex::GetLoadedSuccessfully() const { return LoadedSuccessfully; }
-
-APT_PURE bool metaIndex::CheckDist(string const &MaybeDist) const
-{
- return (this->Codename == MaybeDist
- || this->Suite == MaybeDist);
-}
-APT_PURE std::string metaIndex::GetExpectedDist() const
+APT_PURE std::string metaIndex::GetExpectedDist() const { return Dist; }
+ /*}}}*/
+bool metaIndex::CheckDist(string const &MaybeDist) const /*{{{*/
{
- return Dist;
+ if (MaybeDist.empty() || this->Codename == MaybeDist || this->Suite == MaybeDist)
+ return true;
+
+ std::string Transformed = MaybeDist;
+ if (Transformed == "../project/experimental")
+ Transformed = "experimental";
+
+ auto const pos = Transformed.rfind('/');
+ if (pos != string::npos)
+ Transformed = Transformed.substr(0, pos);
+
+ if (Transformed == ".")
+ Transformed.clear();
+
+ return Transformed.empty() || this->Codename == Transformed || this->Suite == Transformed;
}
/*}}}*/
APT_PURE metaIndex::checkSum *metaIndex::Lookup(string const &MetaKey) const /*{{{*/
diff --git a/test/integration/test-bug-841874-warning-for-mismatching-distribution b/test/integration/test-bug-841874-warning-for-mismatching-distribution
index 9b9f1982e..7502eefc3 100755
--- a/test/integration/test-bug-841874-warning-for-mismatching-distribution
+++ b/test/integration/test-bug-841874-warning-for-mismatching-distribution
@@ -36,3 +36,14 @@ testfailure apt show foo
ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/stretch/updates"
testsuccess apt update
testsuccess apt show foo
+
+# … but only if needed
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#stretch#buster#g' rootdir/etc/apt/sources.list.d/*
+sed -i -e 's#^Codename: stretch$#Codename: buster/updates#g' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailure apt update
+testfailure apt show foo
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/buster"
+testsuccess apt update
+testsuccess apt show foo