]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/indexcopy.cc
* apt-pkg/acquire.cc:
[apt.git] / apt-pkg / indexcopy.cc
index b30777d8d28939e20a2493cc24a9dd7136ad652b..5a92c79b78ef79563ec7bb05d9967999d4db5c4e 100644 (file)
@@ -522,6 +522,15 @@ bool SigVerify::Verify(string prefix, string file, indexRecords *MetaIndex)
 {
    const indexRecords::checkSum *Record = MetaIndex->Lookup(file);
 
 {
    const indexRecords::checkSum *Record = MetaIndex->Lookup(file);
 
+   // we skip non-existing files in the verifcation to support a cdrom
+   // with no Packages file (just a Package.gz), see LP: #255545
+   // (non-existing files are not considered a error)
+   if(!FileExists(prefix+file))
+   {
+      _error->Warning("Skipping non-exisiting file %s", string(prefix+file).c_str());
+      return true;
+   }
+
    if (!Record) 
    {
       _error->Warning("Can't find authentication record for: %s",file.c_str());
    if (!Record) 
    {
       _error->Warning("Can't find authentication record for: %s",file.c_str());
@@ -639,7 +648,7 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
       // Open the Release file and add it to the MetaIndex
       if(!MetaIndex->Load(*I+"Release"))
       {
       // Open the Release file and add it to the MetaIndex
       if(!MetaIndex->Load(*I+"Release"))
       {
-        _error->Error(MetaIndex->ErrorText.c_str());
+        _error->Error("%s",MetaIndex->ErrorText.c_str());
         return false;
       }
       
         return false;
       }
       
@@ -651,6 +660,7 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
         if(!Verify(prefix,*I, MetaIndex)) {
            // something went wrong, don't copy the Release.gpg
            // FIXME: delete any existing gpg file?
         if(!Verify(prefix,*I, MetaIndex)) {
            // something went wrong, don't copy the Release.gpg
            // FIXME: delete any existing gpg file?
+           _error->Discard();
            continue;    
         }
       }
            continue;    
         }
       }