cover patch parser with try/catch (#165200)
authorKlaus Kaempf <kkaempf@suse.de>
Tue, 11 Apr 2006 14:23:47 +0000 (14:23 +0000)
committerKlaus Kaempf <kkaempf@suse.de>
Tue, 11 Apr 2006 14:23:47 +0000 (14:23 +0000)
zypp/target/store/XMLFilesBackend.cc

index 9b70309..16d967d 100644 (file)
@@ -539,6 +539,7 @@ std::list<ResObject::Ptr> XMLFilesBackend::resolvablesFromFile( std::string file
     // a patch file can contain more than one patch, but we store only
     // one patch, so we break at the first
     // FIXME how can we avoid creating this for every object?
+    try {
     XMLPatchParser iter(res_file,"");
     for (; !iter.atEnd(); ++iter)
     {
@@ -550,6 +551,11 @@ std::list<ResObject::Ptr> XMLFilesBackend::resolvablesFromFile( std::string file
 
       break;
     }
+    }
+    catch (const Exception & excpt_r) {
+       ZYPP_CAUGHT( excpt_r );
+       WAR << "Skipping invalid patch file " << file_path << endl;
+    }
   }
   else if ( kind == ResTraits<zypp::Product>::kind )
   {