Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libzypp for openSUSE:Factory checked 
in at 2026-06-09 14:17:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzypp (Old)
 and      /work/SRC/openSUSE:Factory/.libzypp.new.2375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libzypp"

Tue Jun  9 14:17:32 2026 rev:534 rq:1357995 version:17.38.13

Changes:
--------
--- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes  2026-05-31 
18:28:35.284842711 +0200
+++ /work/SRC/openSUSE:Factory/.libzypp.new.2375/libzypp.changes        
2026-06-09 14:21:33.767713096 +0200
@@ -1,0 +2,17 @@
+Mon Jun  8 14:54:34 CEST 2026 - [email protected]
+
+- A .repo files "path=" entry must not refer to a location
+  outside the repo (bsc#1267874, CVE-2026-44942)
+  A "path=" entry may solely denote a sub-directory of the baseurl
+  where the metadata are located. A relative path trying to access
+  data outside the baseurl is reported and sanitized.
+- version 17.38.13 (35)
+
+-------------------------------------------------------------------
+Fri Jun  5 14:13:21 CEST 2026 - [email protected]
+
+- Repo "keyhint" must denote a filename, no path (bsc#1267426,
+  CVE-2026-44941)
+- version 17.38.12 (35)
+
+-------------------------------------------------------------------

Old:
----
  libzypp-17.38.11.tar.bz2

New:
----
  libzypp-17.38.13.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.7dWl9N/_old  2026-06-09 14:21:37.751876882 +0200
+++ /var/tmp/diff_new_pack.7dWl9N/_new  2026-06-09 14:21:37.767877540 +0200
@@ -98,7 +98,7 @@
 %endif
 
 Name:           libzypp
-Version:        17.38.11
+Version:        17.38.13
 Release:        0
 License:        GPL-2.0-or-later
 URL:            https://github.com/openSUSE/libzypp

++++++ libzypp-17.38.11.tar.bz2 -> libzypp-17.38.13.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.38.11/po/uk.po 
new/libzypp-17.38.13/po/uk.po
--- old/libzypp-17.38.11/po/uk.po       2026-05-12 16:28:08.000000000 +0200
+++ new/libzypp-17.38.13/po/uk.po       2026-06-08 08:00:14.000000000 +0200
@@ -14,8 +14,8 @@
 "Project-Id-Version: zypp.uk\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2026-05-12 15:45+0200\n"
-"PO-Revision-Date: 2025-07-22 15:02+0000\n"
-"Last-Translator: Julia Faltenbacher <[email protected]>\n"
+"PO-Revision-Date: 2026-06-07 17:12+0000\n"
+"Last-Translator: Eugene Krater <[email protected]>\n"
 "Language-Team: Ukrainian <https://l10n.opensuse.org/projects/libzypp/master/";
 "uk/>\n"
 "Language: uk\n"
@@ -24,7 +24,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 5.12.2\n"
+"X-Generator: Weblate 2026.6.1\n"
 
 #. translators: an annotation to a gpg keys expiry date
 #: zypp-logic/zypp-common/PublicKey.cc:65
@@ -145,11 +145,11 @@
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:243
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:487
 msgid "Invalid spawn arguments given."
-msgstr ""
+msgstr "Вказано неправильні аргументи запуску."
 
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:299
 msgid "Unable to create control pipe."
-msgstr ""
+msgstr "Неможливо створити канал контролю."
 
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:366
 #, c-format, boost-format
@@ -181,22 +181,22 @@
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:432
 #, c-format, boost-format
 msgid "Can't exec '%s', chdir failed (%s)."
-msgstr ""
+msgstr "Неможливо виконати “%s”, помилка під час зміни каталогу (%s)."
 
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:435
 #, c-format, boost-format
 msgid "Can't exec '%s', chroot failed (%s)."
-msgstr ""
+msgstr "Не вдається виконати “%s”, помилка chroot (%s)."
 
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:438
 #, c-format, boost-format
 msgid "Can't exec '%s', exec failed (%s)."
-msgstr ""
+msgstr "Не вдається виконати “%s”, помилка exec (%s)."
 
 #: zypp-logic/zypp-core/ng/io/forkspawnengine.cc:442
 #, c-format, boost-format
 msgid "Can't exec '%s', unexpected error."
-msgstr ""
+msgstr "Не вдається виконати “%s”, сталася несподівана помилка."
 
 #: zypp-logic/zypp-core/url/UrlBase.cc:221
 #, c-format, boost-format
@@ -342,15 +342,15 @@
 
 #: zypp-logic/zypp-curl/ng/network/networkrequesterror.cc:254
 msgid "No error"
-msgstr ""
+msgstr "Помилок немає"
 
 #: zypp-logic/zypp-curl/ng/network/networkrequesterror.cc:256
 msgid "Internal Error"
-msgstr ""
+msgstr "Внутрішня помилка"
 
 #: zypp-logic/zypp-curl/ng/network/networkrequesterror.cc:258
 msgid "The request was cancelled"
-msgstr ""
+msgstr "Запит було скасовано"
 
 #: zypp-logic/zypp-curl/ng/network/networkrequesterror.cc:260
 msgid "The request exceeded the maximum download size"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.38.11/zypp/VERSION.cmake 
new/libzypp-17.38.13/zypp/VERSION.cmake
--- old/libzypp-17.38.11/zypp/VERSION.cmake     2026-05-29 18:08:11.000000000 
+0200
+++ new/libzypp-17.38.13/zypp/VERSION.cmake     2026-06-08 14:57:13.000000000 
+0200
@@ -61,8 +61,8 @@
 SET(LIBZYPP_MAJOR "17")
 SET(LIBZYPP_COMPATMINOR "35")
 SET(LIBZYPP_MINOR "38")
-SET(LIBZYPP_PATCH "11")
+SET(LIBZYPP_PATCH "13")
 #
-# LAST RELEASED: 17.38.11 (35)
+# LAST RELEASED: 17.38.13 (35)
 # (The number in parenthesis is LIBZYPP_COMPATMINOR)
 #=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.38.11/zypp/package/libzypp.changes 
new/libzypp-17.38.13/zypp/package/libzypp.changes
--- old/libzypp-17.38.11/zypp/package/libzypp.changes   2026-05-29 
18:08:11.000000000 +0200
+++ new/libzypp-17.38.13/zypp/package/libzypp.changes   2026-06-08 
14:57:13.000000000 +0200
@@ -1,4 +1,21 @@
 -------------------------------------------------------------------
+Mon Jun  8 14:54:34 CEST 2026 - [email protected]
+
+- A .repo files "path=" entry must not refer to a location
+  outside the repo (bsc#1267874, CVE-2026-44942)
+  A "path=" entry may solely denote a sub-directory of the baseurl
+  where the metadata are located. A relative path trying to access
+  data outside the baseurl is reported and sanitized.
+- version 17.38.13 (35)
+
+-------------------------------------------------------------------
+Fri Jun  5 14:13:21 CEST 2026 - [email protected]
+
+- Repo "keyhint" must denote a filename, no path (bsc#1267426,
+  CVE-2026-44941)
+- version 17.38.12 (35)
+
+-------------------------------------------------------------------
 Fri May 29 18:07:39 CEST 2026 - [email protected]
 
 - Fix potential crash on malformed or malicious repository
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.38.11/zypp/zypp/RepoInfo.cc 
new/libzypp-17.38.13/zypp/zypp/RepoInfo.cc
--- old/libzypp-17.38.11/zypp/zypp/RepoInfo.cc  2026-05-12 15:30:09.000000000 
+0200
+++ new/libzypp-17.38.13/zypp/zypp/RepoInfo.cc  2026-06-08 14:57:13.000000000 
+0200
@@ -135,7 +135,7 @@
     repo::RepoType type() const
     {
       if ( _type == repo::RepoType::NONE && not metadataPath().empty() )
-        setProbedType( probeCache( metadataPath() / path ) );
+        setProbedType( probeCache( metadataPath() / _path ) );
       return _type;
     }
 
@@ -156,9 +156,9 @@
         filesystem::Glob g;
         // TODO: REPOMD: this assumes we know the name of the tarball. In fact
         // we'd need to get the file from repomd.xml (<data 
type="license[-name_r]">)
-        g.add( metadataPath() / path / ("repodata/*"+licenseStem+".tar.gz") );
+        g.add( metadataPath() / _path / ("repodata/*"+licenseStem+".tar.gz") );
         if ( g.empty() )
-          g.add( metadataPath() / path / (licenseStem+".tar.gz") );
+          g.add( metadataPath() / _path / (licenseStem+".tar.gz") );
 
         if ( !g.empty() )
           ret = *g.begin();
@@ -216,8 +216,8 @@
            && repo::RepoMirrorList::urlSupportsMirrorLink( 
*_baseUrls.transformedBegin() ) ) {
 
         mlurl = *_baseUrls.transformedBegin ();
-        if ( !path.emptyOrRoot () )
-          mlurl.setPathName(path);
+        if ( !_path.emptyOrRoot () )
+          mlurl.setPathName(_path);
         mlurl.pathNameSetTrailingSlash();
         mlurl.setQueryParam("mirrorlist", std::string() );
 
@@ -466,7 +466,7 @@
 
   public:
     TriBool keeppackages;
-    Pathname path;
+    Pathname _path;
     std::string service;
     std::string targetDistro;
 
@@ -798,7 +798,7 @@
   }
 
   void RepoInfo::setPath( const Pathname &path )
-  { _pimpl->path = path; }
+  { _pimpl->_path = path.absolutename(); /* must not refer to ../ */ }
 
   void RepoInfo::setType( const repo::RepoType &t )
   { _pimpl->setType( t ); }
@@ -877,7 +877,7 @@
   { return _pimpl->baseUrls().raw(); }
 
   Pathname RepoInfo::path() const
-  { return _pimpl->path; }
+  { return _pimpl->_path; }
 
   std::string RepoInfo::service() const
   { return _pimpl->service; }
@@ -1120,7 +1120,7 @@
       }
     }
 
-    if ( ! _pimpl->path.empty() )
+    if ( ! path().empty() )
       str << "path="<< path() << endl;
 
     if ( ! _pimpl->cfgMirrorlistUrl().raw().asString().empty() )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.38.11/zypp/zypp/parser/RepoFileReader.cc 
new/libzypp-17.38.13/zypp/zypp/parser/RepoFileReader.cc
--- old/libzypp-17.38.11/zypp/zypp/parser/RepoFileReader.cc     2026-05-12 
15:30:09.000000000 +0200
+++ new/libzypp-17.38.13/zypp/zypp/parser/RepoFileReader.cc     2026-06-08 
15:13:20.000000000 +0200
@@ -10,6 +10,7 @@
  *
 */
 #include <iostream>
+#include <zypp/ZYppCallbacks.h>
 #include <zypp-core/base/LogTools.h>
 #include <zypp-core/base/String.h>
 #include <zypp-core/base/StringV.h>
@@ -157,8 +158,16 @@
             info.setEnabled( str::strToTrue( it->second ) );
           else if ( it->first == "priority" )
             info.setPriority( str::strtonum<unsigned>( it->second ) );
-          else if ( it->first == "path" )
-            info.setPath( Pathname(it->second) );
+          else if ( it->first == "path" ) {
+            Pathname location { it->second };
+            if ( location.relativeDotDot() ) {
+              // Don't accept downloadable data outside repo root
+              JobReport::warning( str::sconcat( *its,": hostile 
path=",location," => ", location.absolutename() ) );
+              pWAR( "Hostile path=", location, "=>", location.absolutename() );
+              location = location.absolutename();
+            }
+            info.setPath( location );
+          }
           else if ( it->first == "type" )
             ; // bsc#1177427 et.al.: type in a .repo file is legacy - ignore 
it and let RepoManager probe
           else if ( it->first == "autorefresh" )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libzypp-17.38.11/zypp/zypp/parser/yum/RepomdFileReader.cc 
new/libzypp-17.38.13/zypp/zypp/parser/yum/RepomdFileReader.cc
--- old/libzypp-17.38.11/zypp/zypp/parser/yum/RepomdFileReader.cc       
2026-05-27 17:50:41.000000000 +0200
+++ new/libzypp-17.38.13/zypp/zypp/parser/yum/RepomdFileReader.cc       
2026-06-05 14:14:03.000000000 +0200
@@ -233,7 +233,8 @@
       if ( tag.compare( 0,10,"gpg-pubkey" ) != 0 )
         continue;
 
-      static const str::regex rx( 
"^(gpg-pubkey([^?]*))(\\?fpr=([[:xdigit:]]{8,}))?$" );
+      // bsc#1267426: Do not accept a '/' in keyfile. It must not be a path.
+      static const str::regex rx( 
"^(gpg-pubkey([^/?]*))(\\?fpr=([[:xdigit:]]{8,}))?$" );
       str::smatch what;
       if ( str::regex_match( tag.c_str(), what, rx ) ) {
         std::string keyfile { what[1] };

Reply via email to