Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libostree for openSUSE:Factory checked in at 2026-07-29 18:58:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libostree (Old) and /work/SRC/openSUSE:Factory/.libostree.new.2004 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libostree" Wed Jul 29 18:58:14 2026 rev:54 rq:1367816 version:2026.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libostree/libostree.changes 2026-04-15 16:04:03.533736696 +0200 +++ /work/SRC/openSUSE:Factory/.libostree.new.2004/libostree.changes 2026-07-29 18:58:22.951851700 +0200 @@ -1,0 +2,12 @@ +Sun Jul 26 07:22:40 UTC 2026 - Andreas Stieger <[email protected]> + +- Update to 2026.2: + * Fix GVariant memory leak during opaque whiteout scanning that + could cause bootc install to-disk to fail with EBUSY on unmount + * Fix a crash for invalid UTF-8 ref names during pull operations + * Fix Kernel argument handling was fixed to properly handle quoted + values in /proc/cmdline + * Correct staged deployment bootconfig merging to preserve + options across re-staging + +------------------------------------------------------------------- Old: ---- libostree-2026.1.tar.xz New: ---- libostree-2026.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libostree.spec ++++++ --- /var/tmp/diff_new_pack.aBF8hL/_old 2026-07-29 18:58:23.451868946 +0200 +++ /var/tmp/diff_new_pack.aBF8hL/_new 2026-07-29 18:58:23.455869084 +0200 @@ -24,7 +24,7 @@ %bcond_without ed25519 %bcond_with tests Name: libostree -Version: 2026.1 +Version: 2026.2 Release: 0 Summary: Git for operating system binaries License: LGPL-2.0-or-later ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.aBF8hL/_old 2026-07-29 18:58:23.503870740 +0200 +++ /var/tmp/diff_new_pack.aBF8hL/_new 2026-07-29 18:58:23.507870878 +0200 @@ -1,6 +1,6 @@ -mtime: 1775904797 -commit: bfd49d4da3003e8b2231dbd7d90b3e5efce6a996fe32206d5a889658d2eec589 +mtime: 1785050693 +commit: c98e1eb110fba91bebb4cc4b08bcdc62f1a0725e98776484676933f1082db37b url: https://src.opensuse.org/GNOME/libostree -revision: bfd49d4da3003e8b2231dbd7d90b3e5efce6a996fe32206d5a889658d2eec589 +revision: c98e1eb110fba91bebb4cc4b08bcdc62f1a0725e98776484676933f1082db37b projectscmsync: https://src.opensuse.org/GNOME/_ObsPrj ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-26 09:24:53.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild ++++++ libostree-2026.1.tar.xz -> libostree-2026.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/Makefile-tests.am new/libostree-2026.2/Makefile-tests.am --- old/libostree-2026.1/Makefile-tests.am 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/Makefile-tests.am 2026-06-29 21:06:12.000000000 +0200 @@ -292,7 +292,7 @@ tests/test-keyfile-utils tests/test-ot-opt-utils tests/test-ot-tool-util \ tests/test-checksum tests/test-lzma tests/test-rollsum tests/test-bootconfig-parser-internals \ tests/test-basic-c tests/test-sysroot-c tests/test-pull-c tests/test-repo tests/test-include-ostree-h tests/test-kargs \ - tests/test-rfc2616-dates tests/test-pem + tests/test-rfc2616-dates tests/test-pem tests/test-validate-utf8 if USE_GPGME _installed_or_uninstalled_test_programs += \ @@ -435,6 +435,13 @@ tests_test_pem_CFLAGS = $(TESTS_CFLAGS) tests_test_pem_LDADD = $(TESTS_LDADD) +tests_test_validate_utf8_SOURCES = \ + src/libostree/ostree-core.c \ + src/libostree/ostree-varint.c \ + tests/test-validate-utf8.c +tests_test_validate_utf8_CFLAGS = $(TESTS_CFLAGS) $(libglnx_cflags) +tests_test_validate_utf8_LDADD = $(TESTS_LDADD) + noinst_PROGRAMS += tests/test-commit-sign-sh-ext tests_test_commit_sign_sh_ext_CFLAGS = $(TESTS_CFLAGS) tests_test_commit_sign_sh_ext_LDADD = $(TESTS_LDADD) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/Makefile.in new/libostree-2026.2/Makefile.in --- old/libostree-2026.1/Makefile.in 2026-04-10 21:56:45.000000000 +0200 +++ new/libostree-2026.2/Makefile.in 2026-07-01 19:07:02.000000000 +0200 @@ -666,7 +666,8 @@ tests/test-pull-c$(EXEEXT) tests/test-repo$(EXEEXT) \ tests/test-include-ostree-h$(EXEEXT) tests/test-kargs$(EXEEXT) \ tests/test-rfc2616-dates$(EXEEXT) tests/test-pem$(EXEEXT) \ - $(am__EXEEXT_4) $(am__EXEEXT_5) + tests/test-validate-utf8$(EXEEXT) $(am__EXEEXT_4) \ + $(am__EXEEXT_5) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__EXEEXT_7 = \ @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@ $(am__EXEEXT_6) am__EXEEXT_8 = tests/test-bloom$(EXEEXT) \ @@ -1577,6 +1578,17 @@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(tests_test_sysroot_c_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +am_tests_test_validate_utf8_OBJECTS = \ + src/libostree/tests_test_validate_utf8-ostree-core.$(OBJEXT) \ + src/libostree/tests_test_validate_utf8-ostree-varint.$(OBJEXT) \ + tests/test_validate_utf8-test-validate-utf8.$(OBJEXT) +tests_test_validate_utf8_OBJECTS = \ + $(am_tests_test_validate_utf8_OBJECTS) +tests_test_validate_utf8_DEPENDENCIES = $(am__DEPENDENCIES_18) +tests_test_validate_utf8_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ am_tests_test_varint_OBJECTS = \ src/libostree/tests_test_varint-ostree-varint.$(OBJEXT) \ tests/test_varint-test-varint.$(OBJEXT) @@ -1718,6 +1730,8 @@ src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po \ src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po \ src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po \ + src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Po \ + src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Po \ src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po \ src/libotcore/$(DEPDIR)/libotcore_la-otcore-ed25519-verify.Plo \ src/libotcore/$(DEPDIR)/libotcore_la-otcore-prepare-root.Plo \ @@ -1842,6 +1856,7 @@ tests/$(DEPDIR)/test_rollsum-test-rollsum.Po \ tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po \ tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po \ + tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Po \ tests/$(DEPDIR)/test_varint-test-varint.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -1892,6 +1907,7 @@ $(tests_test_rfc2616_dates_SOURCES) \ $(tests_test_rollsum_SOURCES) \ $(tests_test_rollsum_cli_SOURCES) tests/test-sysroot-c.c \ + $(tests_test_validate_utf8_SOURCES) \ $(tests_test_varint_SOURCES) DIST_SOURCES = $(libbsdiff_la_SOURCES) $(libbupsplit_la_SOURCES) \ $(libglnx_la_SOURCES) $(am__libostree_1_la_SOURCES_DIST) \ @@ -1925,6 +1941,7 @@ $(tests_test_rfc2616_dates_SOURCES) \ $(tests_test_rollsum_SOURCES) \ $(tests_test_rollsum_cli_SOURCES) tests/test-sysroot-c.c \ + $(tests_test_validate_utf8_SOURCES) \ $(tests_test_varint_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ @@ -3262,8 +3279,8 @@ tests/test-bootconfig-parser-internals tests/test-basic-c \ tests/test-sysroot-c tests/test-pull-c tests/test-repo \ tests/test-include-ostree-h tests/test-kargs \ - tests/test-rfc2616-dates tests/test-pem $(am__append_91) \ - $(am__append_94) + tests/test-rfc2616-dates tests/test-pem \ + tests/test-validate-utf8 $(am__append_91) $(am__append_94) @USE_LIBSOUP_OR_LIBSOUP3_TRUE@ostree_trivial_httpd_SOURCES = src/ostree/ostree-trivial-httpd.c @USE_LIBSOUP_OR_LIBSOUP3_TRUE@ostree_trivial_httpd_CFLAGS = $(common_tests_cflags) $(OT_INTERNAL_SOUP_CFLAGS) @USE_LIBSOUP_OR_LIBSOUP3_TRUE@ostree_trivial_httpd_LDADD = $(common_tests_ldadd) $(OT_INTERNAL_SOUP_LIBS) @@ -3356,6 +3373,13 @@ tests_test_pem_CFLAGS = $(TESTS_CFLAGS) tests_test_pem_LDADD = $(TESTS_LDADD) +tests_test_validate_utf8_SOURCES = \ + src/libostree/ostree-core.c \ + src/libostree/ostree-varint.c \ + tests/test-validate-utf8.c + +tests_test_validate_utf8_CFLAGS = $(TESTS_CFLAGS) $(libglnx_cflags) +tests_test_validate_utf8_LDADD = $(TESTS_LDADD) tests_test_commit_sign_sh_ext_CFLAGS = $(TESTS_CFLAGS) tests_test_commit_sign_sh_ext_LDADD = $(TESTS_LDADD) @USE_GPGME_TRUE@tests_test_gpg_verify_result_SOURCES = \ @@ -4837,6 +4861,18 @@ tests/test-sysroot-c$(EXEEXT): $(tests_test_sysroot_c_OBJECTS) $(tests_test_sysroot_c_DEPENDENCIES) $(EXTRA_tests_test_sysroot_c_DEPENDENCIES) tests/$(am__dirstamp) @rm -f tests/test-sysroot-c$(EXEEXT) $(AM_V_CCLD)$(tests_test_sysroot_c_LINK) $(tests_test_sysroot_c_OBJECTS) $(tests_test_sysroot_c_LDADD) $(LIBS) +src/libostree/tests_test_validate_utf8-ostree-core.$(OBJEXT): \ + src/libostree/$(am__dirstamp) \ + src/libostree/$(DEPDIR)/$(am__dirstamp) +src/libostree/tests_test_validate_utf8-ostree-varint.$(OBJEXT): \ + src/libostree/$(am__dirstamp) \ + src/libostree/$(DEPDIR)/$(am__dirstamp) +tests/test_validate_utf8-test-validate-utf8.$(OBJEXT): \ + tests/$(am__dirstamp) tests/$(DEPDIR)/$(am__dirstamp) + +tests/test-validate-utf8$(EXEEXT): $(tests_test_validate_utf8_OBJECTS) $(tests_test_validate_utf8_DEPENDENCIES) $(EXTRA_tests_test_validate_utf8_DEPENDENCIES) tests/$(am__dirstamp) + @rm -f tests/test-validate-utf8$(EXEEXT) + $(AM_V_CCLD)$(tests_test_validate_utf8_LINK) $(tests_test_validate_utf8_OBJECTS) $(tests_test_validate_utf8_LDADD) $(LIBS) src/libostree/tests_test_varint-ostree-varint.$(OBJEXT): \ src/libostree/$(am__dirstamp) \ src/libostree/$(DEPDIR)/$(am__dirstamp) @@ -5193,6 +5229,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libotcore/$(DEPDIR)/libotcore_la-otcore-ed25519-verify.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libotcore/$(DEPDIR)/libotcore_la-otcore-prepare-root.Plo@am__quote@ # am--include-marker @@ -5317,6 +5355,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_rollsum-test-rollsum.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_varint-test-varint.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @@ -7890,6 +7929,48 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_sysroot_c_CFLAGS) $(CFLAGS) -c -o tests/test_sysroot_c-test-sysroot-c.obj `if test -f 'tests/test-sysroot-c.c'; then $(CYGPATH_W) 'tests/test-sysroot-c.c'; else $(CYGPATH_W) '$(srcdir)/tests/test-sysroot-c.c'; fi` +src/libostree/tests_test_validate_utf8-ostree-core.o: src/libostree/ostree-core.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_validate_utf8-ostree-core.o -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Tpo -c -o src/libostree/tests_test_validate_utf8-ostree-core.o `test -f 'src/libostree/ostree-core.c' || echo '$(srcdir)/'`src/libostree/ostree-core.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Tpo src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-core.c' object='src/libostree/tests_test_validate_utf8-ostree-core.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -c -o src/libostree/tests_test_validate_utf8-ostree-core.o `test -f 'src/libostree/ostree-core.c' || echo '$(srcdir)/'`src/libostree/ostree-core.c + +src/libostree/tests_test_validate_utf8-ostree-core.obj: src/libostree/ostree-core.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_validate_utf8-ostree-core.obj -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Tpo -c -o src/libostree/tests_test_validate_utf8-ostree-core.obj `if test -f 'src/libostree/ostree-core.c'; then $(CYGPATH_W) 'src/libostree/ostree-core.c'; else $(CYGPATH_W) '$(srcdir)/src/libostree/ostree-core.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Tpo src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-core.c' object='src/libostree/tests_test_validate_utf8-ostree-core.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -c -o src/libostree/tests_test_validate_utf8-ostree-core.obj `if test -f 'src/libostree/ostree-core.c'; then $(CYGPATH_W) 'src/libostree/ostree-core.c'; else $(CYGPATH_W) '$(srcdir)/src/libostree/ostree-core.c'; fi` + +src/libostree/tests_test_validate_utf8-ostree-varint.o: src/libostree/ostree-varint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_validate_utf8-ostree-varint.o -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Tpo -c -o src/libostree/tests_test_validate_utf8-ostree-varint.o `test -f 'src/libostree/ostree-varint.c' || echo '$(srcdir)/'`src/libostree/ostree-varint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Tpo src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-varint.c' object='src/libostree/tests_test_validate_utf8-ostree-varint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -c -o src/libostree/tests_test_validate_utf8-ostree-varint.o `test -f 'src/libostree/ostree-varint.c' || echo '$(srcdir)/'`src/libostree/ostree-varint.c + +src/libostree/tests_test_validate_utf8-ostree-varint.obj: src/libostree/ostree-varint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_validate_utf8-ostree-varint.obj -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Tpo -c -o src/libostree/tests_test_validate_utf8-ostree-varint.obj `if test -f 'src/libostree/ostree-varint.c'; then $(CYGPATH_W) 'src/libostree/ostree-varint.c'; else $(CYGPATH_W) '$(srcdir)/src/libostree/ostree-varint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Tpo src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-varint.c' object='src/libostree/tests_test_validate_utf8-ostree-varint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -c -o src/libostree/tests_test_validate_utf8-ostree-varint.obj `if test -f 'src/libostree/ostree-varint.c'; then $(CYGPATH_W) 'src/libostree/ostree-varint.c'; else $(CYGPATH_W) '$(srcdir)/src/libostree/ostree-varint.c'; fi` + +tests/test_validate_utf8-test-validate-utf8.o: tests/test-validate-utf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -MT tests/test_validate_utf8-test-validate-utf8.o -MD -MP -MF tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Tpo -c -o tests/test_validate_utf8-test-validate-utf8.o `test -f 'tests/test-validate-utf8.c' || echo '$(srcdir)/'`tests/test-validate-utf8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Tpo tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/test-validate-utf8.c' object='tests/test_validate_utf8-test-validate-utf8.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -c -o tests/test_validate_utf8-test-validate-utf8.o `test -f 'tests/test-validate-utf8.c' || echo '$(srcdir)/'`tests/test-validate-utf8.c + +tests/test_validate_utf8-test-validate-utf8.obj: tests/test-validate-utf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -MT tests/test_validate_utf8-test-validate-utf8.obj -MD -MP -MF tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Tpo -c -o tests/test_validate_utf8-test-validate-utf8.obj `if test -f 'tests/test-validate-utf8.c'; then $(CYGPATH_W) 'tests/test-validate-utf8.c'; else $(CYGPATH_W) '$(srcdir)/tests/test-validate-utf8.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Tpo tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/test-validate-utf8.c' object='tests/test_validate_utf8-test-validate-utf8.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_validate_utf8_CFLAGS) $(CFLAGS) -c -o tests/test_validate_utf8-test-validate-utf8.obj `if test -f 'tests/test-validate-utf8.c'; then $(CYGPATH_W) 'tests/test-validate-utf8.c'; else $(CYGPATH_W) '$(srcdir)/tests/test-validate-utf8.c'; fi` + src/libostree/tests_test_varint-ostree-varint.o: src/libostree/ostree-varint.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_varint_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_varint-ostree-varint.o -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Tpo -c -o src/libostree/tests_test_varint-ostree-varint.o `test -f 'src/libostree/ostree-varint.c' || echo '$(srcdir)/'`src/libostree/ostree-varint.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Tpo src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po @@ -8856,6 +8937,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +tests/test-validate-utf8.log: tests/test-validate-utf8$(EXEEXT) + @p='tests/test-validate-utf8$(EXEEXT)'; \ + b='tests/test-validate-utf8'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) tests/test-gpg-verify-result.log: tests/test-gpg-verify-result$(EXEEXT) @p='tests/test-gpg-verify-result$(EXEEXT)'; \ b='tests/test-gpg-verify-result'; \ @@ -10153,6 +10241,8 @@ -rm -f src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po + -rm -f src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Po + -rm -f src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Po -rm -f src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po -rm -f src/libotcore/$(DEPDIR)/libotcore_la-otcore-ed25519-verify.Plo -rm -f src/libotcore/$(DEPDIR)/libotcore_la-otcore-prepare-root.Plo @@ -10277,6 +10367,7 @@ -rm -f tests/$(DEPDIR)/test_rollsum-test-rollsum.Po -rm -f tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po -rm -f tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po + -rm -f tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Po -rm -f tests/$(DEPDIR)/test_varint-test-varint.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ @@ -10459,6 +10550,8 @@ -rm -f src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po + -rm -f src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-core.Po + -rm -f src/libostree/$(DEPDIR)/tests_test_validate_utf8-ostree-varint.Po -rm -f src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po -rm -f src/libotcore/$(DEPDIR)/libotcore_la-otcore-ed25519-verify.Plo -rm -f src/libotcore/$(DEPDIR)/libotcore_la-otcore-prepare-root.Plo @@ -10583,6 +10676,7 @@ -rm -f tests/$(DEPDIR)/test_rollsum-test-rollsum.Po -rm -f tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po -rm -f tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po + -rm -f tests/$(DEPDIR)/test_validate_utf8-test-validate-utf8.Po -rm -f tests/$(DEPDIR)/test_varint-test-varint.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/apidoc/html/index.html new/libostree-2026.2/apidoc/html/index.html --- old/libostree-2026.1/apidoc/html/index.html 2026-04-10 21:57:07.000000000 +0200 +++ new/libostree-2026.2/apidoc/html/index.html 2026-07-01 19:07:16.000000000 +0200 @@ -14,7 +14,7 @@ <div class="titlepage"> <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">OSTree API references</p></th></tr></table></div> -<div><p class="releaseinfo">for OSTree 2026.1</p></div> +<div><p class="releaseinfo">for OSTree 2026.2</p></div> </div> <hr> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/apidoc/html/ostree-Root-partition-mount-point.html new/libostree-2026.2/apidoc/html/ostree-Root-partition-mount-point.html --- old/libostree-2026.1/apidoc/html/ostree-Root-partition-mount-point.html 2026-04-10 21:57:07.000000000 +0200 +++ new/libostree-2026.2/apidoc/html/ostree-Root-partition-mount-point.html 2026-07-01 19:07:16.000000000 +0200 @@ -2087,8 +2087,8 @@ </tr> <tr> <td class="parameter_name"><p>osname</p></td> -<td class="parameter_description"><p>osname to use for merge deployment. </p></td> -<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> +<td class="parameter_description"><p>osname to use for merge deployment</p></td> +<td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>revision</p></td> @@ -2101,14 +2101,9 @@ <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> </tr> <tr> -<td class="parameter_name"><p>merge_deployment</p></td> -<td class="parameter_description"><p>Use this deployment for merge path. </p></td> -<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> -</tr> -<tr> <td class="parameter_name"><p>opts</p></td> -<td class="parameter_description"><p>Options</p></td> -<td class="parameter_annotations"> </td> +<td class="parameter_description"><p>Options. </p></td> +<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td> </tr> <tr> <td class="parameter_name"><p>out_new_deployment</p></td> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/apidoc/html/ostree-ostree-version.html new/libostree-2026.2/apidoc/html/ostree-ostree-version.html --- old/libostree-2026.1/apidoc/html/ostree-ostree-version.html 2026-04-10 21:57:07.000000000 +0200 +++ new/libostree-2026.2/apidoc/html/ostree-ostree-version.html 2026-07-01 19:07:16.000000000 +0200 @@ -126,7 +126,7 @@ <hr> <div class="refsect2"> <a name="OSTREE-RELEASE-VERSION:CAPS"></a><h3>OSTREE_RELEASE_VERSION</h3> -<pre class="programlisting">#define OSTREE_RELEASE_VERSION (1) +<pre class="programlisting">#define OSTREE_RELEASE_VERSION (2) </pre> <p>ostree release version component (e.g. 2 if <a class="link" href="ostree-ostree-version.html#OSTREE-VERSION:CAPS" title="OSTREE_VERSION"><code class="literal">OSTREE_VERSION</code></a> is 2017.2)</p> <p class="since">Since: 2017.4</p> @@ -134,7 +134,7 @@ <hr> <div class="refsect2"> <a name="OSTREE-VERSION:CAPS"></a><h3>OSTREE_VERSION</h3> -<pre class="programlisting">#define OSTREE_VERSION (2026.1) +<pre class="programlisting">#define OSTREE_VERSION (2026.2) </pre> <p>ostree version.</p> <p class="since">Since: 2017.4</p> @@ -142,7 +142,7 @@ <hr> <div class="refsect2"> <a name="OSTREE-VERSION-S:CAPS"></a><h3>OSTREE_VERSION_S</h3> -<pre class="programlisting">#define OSTREE_VERSION_S "2026.1" +<pre class="programlisting">#define OSTREE_VERSION_S "2026.2" </pre> <p>ostree version, encoded as a string, useful for printing and concatenation.</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/apidoc/version.xml new/libostree-2026.2/apidoc/version.xml --- old/libostree-2026.1/apidoc/version.xml 2026-04-10 21:56:59.000000000 +0200 +++ new/libostree-2026.2/apidoc/version.xml 2026-07-01 19:07:10.000000000 +0200 @@ -1 +1 @@ -2026.1 \ No newline at end of file +2026.2 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/configure new/libostree-2026.2/configure --- old/libostree-2026.1/configure 2026-04-10 21:56:43.000000000 +0200 +++ new/libostree-2026.2/configure 2026-07-01 19:07:01.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for libostree 2026.1. +# Generated by GNU Autoconf 2.72 for libostree 2026.2. # # Report bugs to <[email protected]>. # @@ -614,8 +614,8 @@ # Identity of this package. PACKAGE_NAME='libostree' PACKAGE_TARNAME='libostree' -PACKAGE_VERSION='2026.1' -PACKAGE_STRING='libostree 2026.1' +PACKAGE_VERSION='2026.2' +PACKAGE_STRING='libostree 2026.2' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1622,7 +1622,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures libostree 2026.1 to adapt to many kinds of systems. +'configure' configures libostree 2026.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1693,7 +1693,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libostree 2026.1:";; + short | recursive ) echo "Configuration of libostree 2026.2:";; esac cat <<\_ACEOF @@ -1965,7 +1965,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libostree configure 2026.1 +libostree configure 2026.2 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2350,7 +2350,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libostree $as_me 2026.1, which was +It was created by libostree $as_me 2026.2, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -3835,7 +3835,7 @@ # Define the identity of the package. PACKAGE='libostree' - VERSION='2026.1' + VERSION='2026.2' # Some tools Automake needs. @@ -6687,9 +6687,9 @@ YEAR_VERSION=2026 -RELEASE_VERSION=1 +RELEASE_VERSION=2 -PACKAGE_VERSION=2026.1 +PACKAGE_VERSION=2026.2 pkglibexecdir=$libexecdir/$PACKAGE @@ -22004,7 +22004,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libostree $as_me 2026.1, which was +This file was extended by libostree $as_me 2026.2, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22072,7 +22072,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libostree config.status 2026.1 +libostree config.status 2026.2 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/configure.ac new/libostree-2026.2/configure.ac --- old/libostree-2026.1/configure.ac 2026-04-10 21:55:51.000000000 +0200 +++ new/libostree-2026.2/configure.ac 2026-07-01 19:02:04.000000000 +0200 @@ -1,7 +1,7 @@ AC_PREREQ([2.63]) dnl To perform a release, follow the instructions in `docs/CONTRIBUTING.md`. m4_define([year_version], [2026]) -m4_define([release_version], [1]) +m4_define([release_version], [2]) m4_define([package_version], [year_version.release_version]) AC_INIT([libostree], [package_version], [[email protected]]) is_release_build=yes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-bootloader-zipl.c new/libostree-2026.2/src/libostree/ostree-bootloader-zipl.c --- old/libostree-2026.1/src/libostree/ostree-bootloader-zipl.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-bootloader-zipl.c 2026-06-29 21:06:12.000000000 +0200 @@ -338,7 +338,7 @@ pid_t self = getpid (); - // Store kernel options to temp file, so `genprotimg` can later embed it + // Store kernel options to temp file, so `pvimg` can later embed it g_auto (GLnxTmpfile) cmdline = { 0, }; @@ -356,19 +356,15 @@ return FALSE; g_autofree gchar *ramdisk_filename = g_strdup_printf ("/proc/%d/fd/%d", self, ramdisk.fd); - // Since s390-tools commit f4cf4ae6ebb1 (Remove genprotimg-C and switch to genprotimg-Rust - // implementation) 'genprotimg' is just a symlink to 'pvimg create', which by default doesn't - // overwrite the output image, but introduces the '--overwrite' flag for this. Let's silently - // remove the file to support both tools - (void)unlink (SECURE_EXECUTION_BOOT_IMAGE); - g_autoptr (GPtrArray) argv = g_ptr_array_new (); - g_ptr_array_add (argv, "genprotimg"); - g_ptr_array_add (argv, "-i"); + g_ptr_array_add (argv, "pvimg"); + g_ptr_array_add (argv, "create"); + g_ptr_array_add (argv, "--verbose"); + g_ptr_array_add (argv, "--kernel"); g_ptr_array_add (argv, vmlinuz); - g_ptr_array_add (argv, "-r"); + g_ptr_array_add (argv, "--ramdisk"); g_ptr_array_add (argv, ramdisk_filename); - g_ptr_array_add (argv, "-p"); + g_ptr_array_add (argv, "--parmfile"); g_ptr_array_add (argv, cmdline_filename); for (guint i = 0; i < keys->len; ++i) { @@ -378,17 +374,18 @@ ot_journal_print (LOG_INFO, "s390x SE: key[%d]: %s", i + 1, key); } g_ptr_array_add (argv, "--no-verify"); - g_ptr_array_add (argv, "-o"); + g_ptr_array_add (argv, "--overwrite"); + g_ptr_array_add (argv, "--output"); g_ptr_array_add (argv, SECURE_EXECUTION_BOOT_IMAGE); g_ptr_array_add (argv, NULL); gint status = 0; if (!g_spawn_sync (NULL, (char **)argv->pdata, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL, &status, error)) - return glnx_prefix_error (error, "s390x SE: spawning genprotimg"); + return glnx_prefix_error (error, "s390x SE: spawning pvimg"); if (!g_spawn_check_exit_status (status, error)) - return glnx_prefix_error (error, "s390x SE: `genprotimg` failed"); + return glnx_prefix_error (error, "s390x SE: `pvimg` failed"); ot_journal_print (LOG_INFO, "s390x SE: `%s` generated", SECURE_EXECUTION_BOOT_IMAGE); return TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-core.c new/libostree-2026.2/src/libostree/ostree-core.c --- old/libostree-2026.1/src/libostree/ostree-core.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-core.c 2026-06-29 21:06:12.000000000 +0200 @@ -226,6 +226,12 @@ { g_autoptr (GMatchInfo) match = NULL; + g_return_val_if_fail (rev != NULL, FALSE); + + /* Validate the string is valid UTF-8 */ + if (!g_utf8_validate (rev, -1, NULL)) + return glnx_throw (error, "Invalid ref name: not valid UTF-8"); + static gsize regex_initialized; static GRegex *regex; if (g_once_init_enter (®ex_initialized)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-kernel-args.c new/libostree-2026.2/src/libostree/ostree-kernel-args.c --- old/libostree-2026.1/src/libostree/ostree-kernel-args.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-kernel-args.c 2026-06-29 21:06:12.000000000 +0200 @@ -188,13 +188,14 @@ } } - // Add the last slice - if (!quoted) - g_ptr_array_add (strv, g_strndup (start, str + len - start)); - else + // Add the last slice if non-empty. If there's an unterminated quote + // (e.g. from bootloader-reformatted /proc/cmdline), treat the + // remainder as a single token rather than aborting. + if (str + len > start) { - g_debug ("Missing terminating quote in '%s'.\n", str); - g_assert_false (quoted); + if (quoted) + g_debug ("Missing terminating quote in '%s', treating remainder as single token.\n", str); + g_ptr_array_add (strv, g_strndup (start, str + len - start)); } g_ptr_array_add (strv, NULL); @@ -681,7 +682,7 @@ g_strchomp (proc_cmdline); - proc_cmdline_args = g_strsplit (proc_cmdline, " ", -1); + proc_cmdline_args = split_kernel_args (proc_cmdline); ostree_kernel_args_append_argv_filtered (kargs, proc_cmdline_args, filtered_prefixes); return TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-repo-checkout.c new/libostree-2026.2/src/libostree/ostree-repo-checkout.c --- old/libostree-2026.1/src/libostree/ostree-repo-checkout.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-repo-checkout.c 2026-06-26 15:20:31.000000000 +0200 @@ -1031,15 +1031,19 @@ g_autoptr (GVariant) dir_file_contents = g_variant_get_child_value (dirtree, 0); GVariantIter viter; const char *fname; - g_autoptr (GVariant) contents_csum_v = NULL; g_variant_iter_init (&viter, dir_file_contents); - while (g_variant_iter_loop (&viter, "(&s@ay)", &fname, &contents_csum_v)) + /* We only need the name; pass NULL to skip extracting the checksum. + * Note that breaking out of a g_variant_iter_loop() without freeing + * extracted values would leak them - and a leaked child variant pins + * the whole (possibly mmap'd) dirtree object in memory, which kept + * the filesystem busy across the final unmount in `bootc install`. + */ + while (g_variant_iter_loop (&viter, "(&s@ay)", &fname, NULL)) { is_opaque_whiteout = (g_str_equal (fname, OPAQUE_WHITEOUT_NAME)); if (is_opaque_whiteout) break; } - contents_csum_v = NULL; /* iter_loop freed it */ } /* First, make the directory. Push a new scope in case we end up using diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-repo-static-delta-core.c new/libostree-2026.2/src/libostree/ostree-repo-static-delta-core.c --- old/libostree-2026.1/src/libostree/ostree-repo-static-delta-core.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-repo-static-delta-core.c 2026-06-26 15:20:31.000000000 +0200 @@ -817,7 +817,6 @@ *out_was_heuristic = TRUE; guint64 total_size = 0; - guint64 total_usize = 0; guint total_objects = 0; { g_autoptr (GVariant) meta_entries = NULL; @@ -837,8 +836,6 @@ total_objects += n_objects; total_size += size; - total_usize += usize; - if (size > usize) { double ratio = ((double)size) / ((double)usize); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-repo.c new/libostree-2026.2/src/libostree/ostree-repo.c --- old/libostree-2026.1/src/libostree/ostree-repo.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-repo.c 2026-06-29 21:06:12.000000000 +0200 @@ -3176,6 +3176,14 @@ NULL, &min_free_space_percent_str, error)) return FALSE; + /* Validate that the string contains only digits */ + for (const char *p = min_free_space_percent_str; *p; p++) + { + if (!g_ascii_isdigit (*p)) + return glnx_throw (error, "Invalid min-free-space-percent '%s': must be a number", + min_free_space_percent_str); + } + self->min_free_space_percent = g_ascii_strtoull (min_free_space_percent_str, NULL, 10); if (self->min_free_space_percent > 99) return glnx_throw (error, "Invalid min-free-space-percent '%s'", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-sysroot-deploy.c new/libostree-2026.2/src/libostree/ostree-sysroot-deploy.c --- old/libostree-2026.1/src/libostree/ostree-sysroot-deploy.c 2026-04-07 02:00:12.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-sysroot-deploy.c 2026-06-29 21:06:12.000000000 +0200 @@ -3795,14 +3795,25 @@ return TRUE; } +/* Merge all entries from an a{ss} GVariant into a string→string hash table. + * Used to accumulate bootconfig-extra keys from multiple sources during staging. */ +static void +merge_extra_variant_into_table (GVariant *extra, GHashTable *table) +{ + GVariantIter iter; + const char *k, *v; + g_variant_iter_init (&iter, extra); + while (g_variant_iter_next (&iter, "{&s&s}", &k, &v)) + g_hash_table_insert (table, g_strdup (k), g_strdup (v)); +} + /** * ostree_sysroot_stage_tree_with_options: * @self: Sysroot - * @osname: (allow-none): osname to use for merge deployment + * @osname: osname to use for merge deployment * @revision: Checksum to add * @origin: (allow-none): Origin to use for upgrades - * @merge_deployment: (allow-none): Use this deployment for merge path - * @opts: Options + * @opts: (nullable): Options * @out_new_deployment: (out): The new deployment path * @cancellable: Cancellable * @error: Error @@ -3888,27 +3899,72 @@ * These are custom keys set by consumers like bootc and need to survive * the staging roundtrip so they are preserved during finalization at shutdown. * - * First check the new deployment's bootconfig (in case the caller set keys - * on it directly). If none found, fall back to the merge deployment's - * bootconfig, which carries the keys from the currently deployed BLS entry. - * This ensures that x-prefixed keys are inherited across staged deployments - * even though _ostree_deployment_set_bootconfig_from_kargs() creates a fresh - * bootconfig containing only the "options" key. + * Extension keys can come from three sources, merged in increasing + * priority order (higher-priority sources override lower ones for + * the same key): + * + * 1. The merge deployment's bootconfig (on-disk BLS from the + * currently booted or pending deployment) — lowest priority + * 2. The previously staged deployment's bootconfig-extra (a prior + * consumer like bootc may have staged keys that would be lost + * when this new staging replaces the old staged GVariant) + * 3. The new deployment's bootconfig (caller set keys directly) + * — highest priority + * + * This merge ensures that e.g. `bootc loader-entries set-options-for-source` + * followed by `rpm-ostree kargs --append` on the same boot preserves the + * source keys that bootc wrote into the first staged deployment. */ { - GVariant *extra = NULL; - OstreeBootconfigParser *bootconfig = ostree_deployment_get_bootconfig (deployment); - if (bootconfig) - extra = _ostree_bootconfig_parser_get_extra_keys_variant (bootconfig); - if (!extra && merge_deployment) + g_autoptr (GHashTable) merged_extra + = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + + /* Priority 1 (lowest): merge deployment's bootconfig */ + if (merge_deployment) { OstreeBootconfigParser *merge_bootconfig = ostree_deployment_get_bootconfig (merge_deployment); if (merge_bootconfig) - extra = _ostree_bootconfig_parser_get_extra_keys_variant (merge_bootconfig); + { + g_autoptr (GVariant) merge_extra + = _ostree_bootconfig_parser_get_extra_keys_variant (merge_bootconfig); + if (merge_extra) + merge_extra_variant_into_table (merge_extra, merged_extra); + } + } + + /* Priority 2: previously staged deployment's bootconfig-extra. + * The staged deployment data is already loaded and cached in the + * OstreeSysroot during ostree_sysroot_load(). */ + if (self->staged_deployment_data) + { + g_autoptr (GVariant) prev_extra = g_variant_lookup_value ( + self->staged_deployment_data, "bootconfig-extra", (GVariantType *)"a{ss}"); + if (prev_extra) + merge_extra_variant_into_table (prev_extra, merged_extra); + } + + /* Priority 3 (highest): new deployment's bootconfig */ + { + OstreeBootconfigParser *bootconfig = ostree_deployment_get_bootconfig (deployment); + if (bootconfig) + { + g_autoptr (GVariant) new_extra + = _ostree_bootconfig_parser_get_extra_keys_variant (bootconfig); + if (new_extra) + merge_extra_variant_into_table (new_extra, merged_extra); + } + } + + if (g_hash_table_size (merged_extra) > 0) + { + g_auto (GVariantBuilder) extra_builder = OT_VARIANT_BUILDER_INITIALIZER; + g_variant_builder_init (&extra_builder, (GVariantType *)"a{ss}"); + GLNX_HASH_TABLE_FOREACH_KV (merged_extra, const char *, k, const char *, v) + g_variant_builder_add (&extra_builder, "{ss}", k, v); + g_variant_builder_add (builder, "{sv}", "bootconfig-extra", + g_variant_builder_end (&extra_builder)); } - if (extra) - g_variant_builder_add (builder, "{sv}", "bootconfig-extra", extra); } const char *parent = dirname (strdupa (_OSTREE_SYSROOT_RUNSTATE_STAGED)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/libostree/ostree-version.h new/libostree-2026.2/src/libostree/ostree-version.h --- old/libostree-2026.1/src/libostree/ostree-version.h 2026-04-10 21:56:56.000000000 +0200 +++ new/libostree-2026.2/src/libostree/ostree-version.h 2026-07-01 19:07:08.000000000 +0200 @@ -41,7 +41,7 @@ * * Since: 2017.4 */ -#define OSTREE_RELEASE_VERSION (1) +#define OSTREE_RELEASE_VERSION (2) /** * OSTREE_VERSION @@ -50,7 +50,7 @@ * * Since: 2017.4 */ -#define OSTREE_VERSION (2026.1) +#define OSTREE_VERSION (2026.2) /** * OSTREE_VERSION_S: @@ -60,7 +60,7 @@ * * Since: 2017.4 */ -#define OSTREE_VERSION_S "2026.1" +#define OSTREE_VERSION_S "2026.2" #define OSTREE_ENCODE_VERSION(year,release) \ ((year) << 16 | (release)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/ostree/ostree-trivial-httpd.c new/libostree-2026.2/src/ostree/ostree-trivial-httpd.c --- old/libostree-2026.1/src/ostree/ostree-trivial-httpd.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/ostree/ostree-trivial-httpd.c 2026-06-26 15:20:31.000000000 +0200 @@ -281,7 +281,7 @@ do_get (OtTrivialHttpd *self, SoupServer *server, SoupServerMessage *msg, const char *path) #endif { - char *slash; + const char *slash; int ret; struct stat stbuf; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/ostree/ot-builtin-pull-local.c new/libostree-2026.2/src/ostree/ot-builtin-pull-local.c --- old/libostree-2026.1/src/ostree/ot-builtin-pull-local.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/ostree/ot-builtin-pull-local.c 2026-06-29 21:06:12.000000000 +0200 @@ -164,6 +164,14 @@ { const char *ref = argv[i]; + /* Validate ref name is valid UTF-8 */ + if (!g_utf8_validate (ref, -1, NULL)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, + "Invalid ref name: not valid UTF-8"); + goto out; + } + g_ptr_array_add (refs_to_fetch, (char *)ref); } g_ptr_array_add (refs_to_fetch, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/src/ostree/ot-builtin-pull.c new/libostree-2026.2/src/ostree/ot-builtin-pull.c --- old/libostree-2026.1/src/ostree/ot-builtin-pull.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/src/ostree/ot-builtin-pull.c 2026-06-29 21:06:12.000000000 +0200 @@ -262,10 +262,19 @@ { guint j; const char *override_commit_id = at + 1; + g_autofree char *ref_name = g_strndup (argv[i], at - argv[i]); if (!ostree_validate_checksum_string (override_commit_id, error)) goto out; + /* Validate ref name is valid UTF-8 */ + if (!g_utf8_validate (ref_name, -1, NULL)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, + "Invalid ref name: not valid UTF-8"); + goto out; + } + if (!override_commit_ids) { override_commit_ids = g_ptr_array_new_with_free_func (g_free); @@ -276,10 +285,18 @@ } g_ptr_array_add (override_commit_ids, g_strdup (override_commit_id)); - g_ptr_array_add (refs_to_fetch, g_strndup (argv[i], at - argv[i])); + g_ptr_array_add (refs_to_fetch, g_steal_pointer (&ref_name)); } else { + /* Validate ref name is valid UTF-8 */ + if (!g_utf8_validate (argv[i], -1, NULL)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, + "Invalid ref name: not valid UTF-8"); + goto out; + } + g_ptr_array_add (refs_to_fetch, g_strdup (argv[i])); if (override_commit_ids) g_ptr_array_add (override_commit_ids, g_strdup ("")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/tests/test-kargs.c new/libostree-2026.2/tests/test-kargs.c --- old/libostree-2026.1/tests/test-kargs.c 2026-04-07 02:00:06.000000000 +0200 +++ new/libostree-2026.2/tests/test-kargs.c 2026-06-29 21:06:12.000000000 +0200 @@ -278,6 +278,55 @@ g_assert_cmpint (7, ==, g_strv_length (kargs_list)); } +/* Regression test: parsing a /proc/cmdline-style string containing quoted + * kernel args with spaces must not crash. Commit abc7d5b9 added a + * quote-aware splitter (split_kernel_args) but ostree_kernel_args_append_proc_cmdline + * still used a naive g_strsplit(" ") that broke quoted tokens apart, causing a + * g_assert_false(quoted) abort. + * + * Bootloaders may reformat quotes -- e.g. GRUB turns testparam="value with spaces" + * into "testparam=value with spaces" in /proc/cmdline. Both forms must be handled. + */ +static void +test_kargs_quoted_cmdline (void) +{ + /* Test 1: Standard quoted value (as stored by rpm-ostree) */ + { + __attribute__ ((cleanup (ostree_kernel_args_cleanup))) OstreeKernelArgs *karg + = ostree_kernel_args_new (); + ostree_kernel_args_parse_append (karg, + "root=UUID=abc quiet testparam=\"value with spaces\" rw"); + g_assert (check_string_existance (karg, "root=UUID=abc")); + g_assert (check_string_existance (karg, "quiet")); + g_assert (check_string_existance (karg, "testparam=\"value with spaces\"")); + g_assert (check_string_existance (karg, "rw")); + } + + /* Test 2: GRUB-reformatted quoting (quotes wrapping entire token) + * /proc/cmdline may show: "testparam=value with spaces" */ + { + __attribute__ ((cleanup (ostree_kernel_args_cleanup))) OstreeKernelArgs *karg + = ostree_kernel_args_new (); + ostree_kernel_args_parse_append (karg, + "root=UUID=abc quiet \"testparam=value with spaces\" rw"); + g_assert (check_string_existance (karg, "root=UUID=abc")); + g_assert (check_string_existance (karg, "quiet")); + g_assert (check_string_existance (karg, "\"testparam=value with spaces\"")); + g_assert (check_string_existance (karg, "rw")); + } + + /* Test 3: Multiple quoted args */ + { + __attribute__ ((cleanup (ostree_kernel_args_cleanup))) OstreeKernelArgs *karg + = ostree_kernel_args_new (); + ostree_kernel_args_parse_append (karg, "foo=\"1 2\" bar=\"3 4\""); + g_assert (check_string_existance (karg, "foo=\"1 2\"")); + g_assert (check_string_existance (karg, "bar=\"3 4\"")); + g_auto (GStrv) kargs_list = ostree_kernel_args_to_strv (karg); + g_assert_cmpint (2, ==, g_strv_length (kargs_list)); + } +} + int main (int argc, char *argv[]) { @@ -286,5 +335,6 @@ g_test_add_func ("/kargs/kargs_append", test_kargs_append); g_test_add_func ("/kargs/kargs_delete", test_kargs_delete); g_test_add_func ("/kargs/kargs_replace", test_kargs_replace); + g_test_add_func ("/kargs/kargs_quoted_cmdline", test_kargs_quoted_cmdline); return g_test_run (); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libostree-2026.1/tests/test-validate-utf8.c new/libostree-2026.2/tests/test-validate-utf8.c --- old/libostree-2026.1/tests/test-validate-utf8.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libostree-2026.2/tests/test-validate-utf8.c 2026-07-01 18:52:42.000000000 +0200 @@ -0,0 +1,109 @@ +/* + * SPDX-License-Identifier: LGPL-2.0+ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gio/gio.h> +#include <glib.h> +#include <string.h> + +#include "libglnx.h" +#include "ostree.h" + +/* Test that valid UTF-8 refs are accepted */ +static void +test_valid_utf8_refs (void) +{ + g_autoptr (GError) error = NULL; + + /* Valid ASCII ref */ + g_assert_true (ostree_validate_rev ("my-branch", &error)); + g_assert_no_error (error); + + /* Valid ref with numbers */ + g_assert_true (ostree_validate_rev ("branch-123", &error)); + g_assert_no_error (error); + + /* Valid ref with dots and underscores */ + g_assert_true (ostree_validate_rev ("my.branch_name", &error)); + g_assert_no_error (error); + + /* Valid refspec with remote: "remote:branch" is a refspec, not a bare ref. + * ostree_validate_rev() only validates bare ref names; use + * ostree_parse_refspec() for the "remote:ref" form. */ + { + g_autofree char *remote = NULL; + g_autofree char *ref = NULL; + g_assert_true (ostree_parse_refspec ("remote:branch", &remote, &ref, &error)); + g_assert_no_error (error); + g_assert_cmpstr (remote, ==, "remote"); + g_assert_cmpstr (ref, ==, "branch"); + } + + /* Valid ref with slashes */ + g_assert_true (ostree_validate_rev ("path/to/branch", &error)); + g_assert_no_error (error); +} + +/* Test that invalid UTF-8 refs are rejected */ +static void +test_invalid_utf8_refs (void) +{ + g_autoptr (GError) error = NULL; + + /* Invalid UTF-8: 0xFF is never valid in UTF-8 */ + const char invalid_ff[] = { 'b', 'r', 'a', 'n', 'c', 'h', '\xff', '\0' }; + g_assert_false (ostree_validate_rev (invalid_ff, &error)); + g_assert_nonnull (error); + g_clear_error (&error); + + /* Invalid UTF-8: 0xFE is never valid in UTF-8 */ + const char invalid_fe[] = { 'b', 'r', 'a', 'n', 'c', 'h', '\xfe', '\0' }; + g_assert_false (ostree_validate_rev (invalid_fe, &error)); + g_assert_nonnull (error); + g_clear_error (&error); + + /* Invalid UTF-8: 0x80 without leading byte */ + const char invalid_80[] = { 'b', 'r', 'a', 'n', 'c', 'h', '\x80', '\0' }; + g_assert_false (ostree_validate_rev (invalid_80, &error)); + g_assert_nonnull (error); + g_clear_error (&error); + + /* Invalid UTF-8: truncated multi-byte sequence */ + const char invalid_trunc[] = { 'b', 'r', 'a', 'n', 'c', 'h', '\xc3', '\0' }; + g_assert_false (ostree_validate_rev (invalid_trunc, &error)); + g_assert_nonnull (error); + g_clear_error (&error); + + /* Invalid UTF-8: 0x333 as mentioned in issue #2959 */ + const char invalid_333[] + = { 's', 'o', 'm', 'e', '-', 'b', 'r', 'a', 'n', 'c', 'h', '-', 'n', 'a', 'm', + 'e', '-', 'w', 'i', 't', 'h', '-', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '-', + 'u', 't', 'f', '-', 's', 'y', 'm', 'b', 'o', 'l', '-', '\xdb', '\0' }; + g_assert_false (ostree_validate_rev (invalid_333, &error)); + g_assert_nonnull (error); + g_clear_error (&error); +} + +int +main (int argc, char **argv) +{ + g_test_init (&argc, &argv, NULL); + g_test_add_func ("/validate/valid-utf8-refs", test_valid_utf8_refs); + g_test_add_func ("/validate/invalid-utf8-refs", test_invalid_utf8_refs); + return g_test_run (); +}
