Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package expat for openSUSE:Factory checked in at 2026-03-31 15:21:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/expat (Old) and /work/SRC/openSUSE:Factory/.expat.new.1999 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "expat" Tue Mar 31 15:21:49 2026 rev:85 rq:1343391 version:2.7.5 Changes: -------- --- /work/SRC/openSUSE:Factory/expat/expat.changes 2026-02-04 21:06:10.828808925 +0100 +++ /work/SRC/openSUSE:Factory/.expat.new.1999/expat.changes 2026-03-31 15:21:50.923246982 +0200 @@ -1,0 +2,21 @@ +Thu Mar 26 14:09:21 UTC 2026 - David Anes <[email protected]> + +- version update to 2.7.5 (bsc#1259711, bsc#1259729, bsc#1259726) + * CVE-2026-32776 -- Fix NULL function pointer dereference for + empty external parameter entities; it takes use of both + functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + * CVE-2026-32777 -- Protect from XML_TOK_INSTANCE_START + infinite loop in function entityValueProcessor; it takes + use of both functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + * CVE-2026-32778 -- Fix NULL dereference in function setContext + on retry after an earlier ouf-of-memory condition; it takes + use of function XML_ParserCreateNS or XML_ParserCreate_MM + for an application to be vulnerable. + * See full changelog here: + https://github.com/libexpat/libexpat/blob/R_2_7_5/expat/Changes + +------------------------------------------------------------------- Old: ---- expat-2.7.4.tar.xz expat-2.7.4.tar.xz.asc New: ---- expat-2.7.5.tar.xz expat-2.7.5.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ expat.spec ++++++ --- /var/tmp/diff_new_pack.6dIyht/_old 2026-03-31 15:21:53.775366092 +0200 +++ /var/tmp/diff_new_pack.6dIyht/_new 2026-03-31 15:21:53.779366259 +0200 @@ -1,7 +1,7 @@ # # spec file for package expat # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # Copyright (c) 2024 Andreas Stieger <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -17,10 +17,10 @@ # -%global unversion 2_7_4 +%global unversion 2_7_5 %define sover 1 Name: expat -Version: 2.7.4 +Version: 2.7.5 Release: 0 Summary: XML Parser Toolkit License: MIT ++++++ expat-2.7.4.tar.xz -> expat-2.7.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/CMake.README new/expat-2.7.5/CMake.README --- old/expat-2.7.4/CMake.README 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/CMake.README 2026-03-17 20:51:51.000000000 +0100 @@ -3,25 +3,25 @@ The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual Studio) and should work on all other platform cmake supports. -Assuming ~/expat-2.7.4 is the source directory of expat, add a subdirectory +Assuming ~/expat-2.7.5 is the source directory of expat, add a subdirectory build and change into that directory: -~/expat-2.7.4$ mkdir build && cd build -~/expat-2.7.4/build$ +~/expat-2.7.5$ mkdir build && cd build +~/expat-2.7.5/build$ From that directory, call cmake first, then call make, make test and make install in the usual way: -~/expat-2.7.4/build$ cmake .. +~/expat-2.7.5/build$ cmake .. -- The C compiler identification is GNU -- The CXX compiler identification is GNU .... -- Configuring done -- Generating done --- Build files have been written to: /home/patrick/expat-2.7.4/build +-- Build files have been written to: /home/patrick/expat-2.7.5/build If you want to specify the install location for your files, append -DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call. -~/expat-2.7.4/build$ make && make test && make install +~/expat-2.7.5/build$ make && make test && make install Scanning dependencies of target expat [ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o [ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/CMakeLists.txt new/expat-2.7.5/CMakeLists.txt --- old/expat-2.7.4/CMakeLists.txt 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/CMakeLists.txt 2026-03-17 20:51:51.000000000 +0100 @@ -42,7 +42,7 @@ project(expat VERSION - 2.7.4 + 2.7.5 LANGUAGES C ) @@ -468,7 +468,7 @@ endforeach() set(LIBCURRENT 12) # sync -set(LIBREVISION 2) # with +set(LIBREVISION 3) # with set(LIBAGE 11) # configure.ac! math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/Changes new/expat-2.7.5/Changes --- old/expat-2.7.4/Changes 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/Changes 2026-03-17 20:51:51.000000000 +0100 @@ -10,31 +10,72 @@ !! ~~~~~~~~~~~~ !! !! The following topics need *additional skilled C developers* to progress !! !! in a timely manner or at all (loosely ordered by descending priority): !! +!! _______________________ !! +!! - teaming up on fixing the UNFIXED SECURITY ISSUES listed at: !! +!! """"""""""""""""""""""" !! +!! https://github.com/libexpat/libexpat/issues/1160 !! !! !! !! - teaming up on researching and fixing future security reports and !! !! ClusterFuzz findings with few-days-max response times in communication !! !! in order to (1) have a sound fix ready before the end of a 90 days !! !! grace period and (2) in a sustainable manner, !! -!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! -!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - XML_SetReparseDeferralEnabled !! +!! !! !! - implementing and auto-testing XML 1.0r5 support !! !! (needs discussion before pull requests), !! -!! - smart ideas on fixing the Autotools CMake files generation issue !! -!! without breaking CI (needs discussion before pull requests), !! -!! - pushing migration from `int` to `size_t` further !! -!! including edge-cases test coverage (needs discussion before anything). !! !! !! !! For details, please reach out via e-mail to [email protected] so we !! !! can schedule a voice call on the topic, in English or German. !! !! !! -!! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! +!! THANK YOU! Sebastian Pipping -- Berlin, 2026-03-17 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Release 2.7.5 Tue March 17 2026 + Security fixes: + #1158 CVE-2026-32776 -- Fix NULL function pointer dereference for + empty external parameter entities; it takes use of both + functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1161 #1162 CVE-2026-32777 -- Protect from XML_TOK_INSTANCE_START + infinite loop in function entityValueProcessor; it takes + use of both functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1163 CVE-2026-32778 -- Fix NULL dereference in function setContext + on retry after an earlier ouf-of-memory condition; it takes + use of function XML_ParserCreateNS or XML_ParserCreate_MM + for an application to be vulnerable. + #1160 Three more unfixed vulnerabilities left + + Other changes: + #1146 #1147 Autotools: Fix condition for symbol versioning check, in + particular when compiling with slibtool (not libtool) + #1156 Address Cppcheck >=2.20.0 warnings + #1153 tests: Make test_buffer_can_grow_to_max work for MinGW on + Ubuntu 24.04 + #1157 #1159 Version info bumped from 12:2:11 (libexpat*.so.1.11.2) + to 12:3:11 (libexpat*.so.1.11.3); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1148 CI: Fix FreeBSD and Solaris CI + #1149 CI: Bump to WASI SDK 30 + #1153 CI: Adapt to breaking changes with Ubuntu 22.04 + #1156 CI: Adapt to breaking changes in Cppcheck + + Special thanks to: + Berkay Eren Ürün + Christian Ng + Fabio Scaccabarozzi + Francesco Bertolaccini + Mark Brand + Rhodri James + and + AddressSanitizer + Buttercup + OSS-Fuzz / ClusterFuzz + Trail of Bits + Release 2.7.4 Sat January 31 2026 Security fixes: #1131 CVE-2026-24515 -- Function XML_ExternalEntityParserCreate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/README.md new/expat-2.7.5/README.md --- old/expat-2.7.4/README.md 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/README.md 2026-03-17 20:51:51.000000000 +0100 @@ -11,7 +11,7 @@ > at the top of the `Changes` file. -# Expat, Release 2.7.4 +# Expat, Release 2.7.5 This is Expat, a C99 library for parsing [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/configure new/expat-2.7.5/configure --- old/expat-2.7.4/configure 2026-01-31 12:45:21.000000000 +0100 +++ new/expat-2.7.5/configure 2026-03-17 20:59:52.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for expat 2.7.4. +# Generated by GNU Autoconf 2.72 for expat 2.7.5. # # Report bugs to <https://github.com/libexpat/libexpat/issues>. # @@ -614,8 +614,8 @@ # Identity of this package. PACKAGE_NAME='expat' PACKAGE_TARNAME='expat' -PACKAGE_VERSION='2.7.4' -PACKAGE_STRING='expat 2.7.4' +PACKAGE_VERSION='2.7.5' +PACKAGE_STRING='expat 2.7.5' PACKAGE_BUGREPORT='https://github.com/libexpat/libexpat/issues' PACKAGE_URL='' @@ -1426,7 +1426,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 expat 2.7.4 to adapt to many kinds of systems. +'configure' configures expat 2.7.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1497,7 +1497,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of expat 2.7.4:";; + short | recursive ) echo "Configuration of expat 2.7.5:";; esac cat <<\_ACEOF @@ -1636,7 +1636,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -expat configure 2.7.4 +expat configure 2.7.5 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2285,7 +2285,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by expat $as_me 2.7.4, which was +It was created by expat $as_me 2.7.5, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -4061,7 +4061,7 @@ # Define the identity of the package. PACKAGE='expat' - VERSION='2.7.4' + VERSION='2.7.5' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -4279,7 +4279,7 @@ LIBCURRENT=12 # sync -LIBREVISION=2 # with +LIBREVISION=3 # with LIBAGE=11 # CMakeLists.txt! ac_config_headers="$ac_config_headers expat_config.h" @@ -20320,7 +20320,7 @@ fi - if test "$enable_symbol_versioning" != xno; then + if test "x$enable_symbol_versioning" != xno; then HAVE_VSCRIPT_TRUE= HAVE_VSCRIPT_FALSE='#' else @@ -22752,7 +22752,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by expat $as_me 2.7.4, which was +This file was extended by expat $as_me 2.7.5, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22820,7 +22820,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -expat config.status 2.7.4 +expat config.status 2.7.5 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/expat-2.7.4/configure.ac new/expat-2.7.5/configure.ac --- old/expat-2.7.4/configure.ac 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/configure.ac 2026-03-17 20:51:51.000000000 +0100 @@ -28,6 +28,7 @@ dnl Copyright (c) 2025 Alfonso Gregory <[email protected]> dnl Copyright (c) 2026 Rosen Penev <[email protected]> dnl Copyright (c) 2026 Gordon Messmer <[email protected]> +dnl Copyright (c) 2026 Fabio Scaccabarozzi <[email protected]> dnl Licensed under the MIT license: dnl dnl Permission is hereby granted, free of charge, to any person obtaining @@ -89,7 +90,7 @@ dnl LIBCURRENT=12 # sync -LIBREVISION=2 # with +LIBREVISION=3 # with LIBAGE=11 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) @@ -152,7 +153,7 @@ AC_SUBST([VSCRIPT_LDFLAGS]) ]) AM_CONDITIONAL([HAVE_VSCRIPT], - [test "$enable_symbol_versioning" != xno]) + [test "x$enable_symbol_versioning" != xno]) dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312) AS_CASE(["$LD"],[*clang*], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/doc/reference.html new/expat-2.7.5/doc/reference.html --- old/expat-2.7.4/doc/reference.html 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/doc/reference.html 2026-03-17 20:51:51.000000000 +0100 @@ -53,7 +53,7 @@ <body> <div> <h1> - The Expat XML Parser <small>Release 2.7.4</small> + The Expat XML Parser <small>Release 2.7.5</small> </h1> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/doc/xmlwf.1 new/expat-2.7.5/doc/xmlwf.1 --- old/expat-2.7.4/doc/xmlwf.1 2026-01-31 12:45:29.000000000 +0100 +++ new/expat-2.7.5/doc/xmlwf.1 2026-03-17 21:00:00.000000000 +0100 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH XMLWF 1 "January 31, 2026" "" "" +.TH XMLWF 1 "March 17, 2026" "" "" .SH NAME xmlwf \- Determines if an XML document is well-formed .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/doc/xmlwf.xml new/expat-2.7.5/doc/xmlwf.xml --- old/expat-2.7.4/doc/xmlwf.xml 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/doc/xmlwf.xml 2026-03-17 20:51:51.000000000 +0100 @@ -21,7 +21,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ <!ENTITY dhfirstname "<firstname>Scott</firstname>"> <!ENTITY dhsurname "<surname>Bronson</surname>"> - <!ENTITY dhdate "<date>January 31, 2026</date>"> + <!ENTITY dhdate "<date>March 17, 2026</date>"> <!-- Please adjust this^^ date whenever cutting a new release. --> <!ENTITY dhsection "<manvolnum>1</manvolnum>"> <!ENTITY dhemail "<email>[email protected]</email>"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/expat_config.h new/expat-2.7.5/expat_config.h --- old/expat-2.7.4/expat_config.h 2026-01-31 12:45:28.000000000 +0100 +++ new/expat-2.7.5/expat_config.h 2026-03-17 20:59:59.000000000 +0100 @@ -80,7 +80,7 @@ #define PACKAGE_NAME "expat" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "expat 2.7.4" +#define PACKAGE_STRING "expat 2.7.5" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "expat" @@ -89,7 +89,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.7.4" +#define PACKAGE_VERSION "2.7.5" /* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for @@ -97,7 +97,7 @@ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "2.7.4" +#define VERSION "2.7.5" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/Makefile.am new/expat-2.7.5/lib/Makefile.am --- old/expat-2.7.4/lib/Makefile.am 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/Makefile.am 2026-03-17 20:51:51.000000000 +0100 @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2024 Sebastian Pipping <[email protected]> +# Copyright (c) 2017-2026 Sebastian Pipping <[email protected]> # Copyright (c) 2017 Tomasz Kłoczko <[email protected]> # Copyright (c) 2019 David Loffredo <[email protected]> # Copyright (c) 2026 Gordon Messmer <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/Makefile.in new/expat-2.7.5/lib/Makefile.in --- old/expat-2.7.4/lib/Makefile.in 2026-01-31 12:45:21.000000000 +0100 +++ new/expat-2.7.5/lib/Makefile.in 2026-03-17 20:59:53.000000000 +0100 @@ -22,7 +22,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2024 Sebastian Pipping <[email protected]> +# Copyright (c) 2017-2026 Sebastian Pipping <[email protected]> # Copyright (c) 2017 Tomasz Kłoczko <[email protected]> # Copyright (c) 2019 David Loffredo <[email protected]> # Copyright (c) 2026 Gordon Messmer <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/expat.h new/expat-2.7.5/lib/expat.h --- old/expat-2.7.4/lib/expat.h 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/expat.h 2026-03-17 20:51:51.000000000 +0100 @@ -1082,7 +1082,7 @@ */ # define XML_MAJOR_VERSION 2 # define XML_MINOR_VERSION 7 -# define XML_MICRO_VERSION 4 +# define XML_MICRO_VERSION 5 # ifdef __cplusplus } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/expat_external.h new/expat-2.7.5/lib/expat_external.h --- old/expat-2.7.4/lib/expat_external.h 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/expat_external.h 2026-03-17 20:51:51.000000000 +0100 @@ -12,7 +12,7 @@ Copyright (c) 2001-2002 Greg Stein <[email protected]> Copyright (c) 2002-2006 Karl Waclawek <[email protected]> Copyright (c) 2016 Cristian Rodríguez <[email protected]> - Copyright (c) 2016-2025 Sebastian Pipping <[email protected]> + Copyright (c) 2016-2026 Sebastian Pipping <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> Copyright (c) 2018 Yury Gribov <[email protected]> Licensed under the MIT license: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/xmlparse.c new/expat-2.7.5/lib/xmlparse.c --- old/expat-2.7.4/lib/xmlparse.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/xmlparse.c 2026-03-17 20:51:51.000000000 +0100 @@ -1,4 +1,4 @@ -/* fab937ab8b186d7d296013669c332e6dfce2f99567882cff1f8eb24223c524a7 (2.7.4+) +/* 93c1caa66e2b0310459482516af05505b57c5cb7b96df777105308fc585c85d1 (2.7.5+) __ __ _ ___\ \/ /_ __ __ _| |_ / _ \\ /| '_ \ / _` | __| @@ -590,6 +590,8 @@ static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); static const XML_Char *FASTCALL poolCopyString(STRING_POOL *pool, const XML_Char *s); +static const XML_Char *FASTCALL poolCopyStringNoFinish(STRING_POOL *pool, + const XML_Char *s); static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); static const XML_Char *FASTCALL poolAppendString(STRING_POOL *pool, @@ -5086,7 +5088,7 @@ } /* If we get this token, we have the start of what might be a normal tag, but not a declaration (i.e. it doesn't begin with - "<!"). In a DTD context, that isn't legal. + "<!" or "<?"). In a DTD context, that isn't legal. */ else if (tok == XML_TOK_INSTANCE_START) { *nextPtr = next; @@ -5175,6 +5177,15 @@ /* found end of entity value - can store it now */ return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT, NULL); } + /* If we get this token, we have the start of what might be a + normal tag, but not a declaration (i.e. it doesn't begin with + "<!" or "<?"). In a DTD context, that isn't legal. + */ + else if (tok == XML_TOK_INSTANCE_START) { + *nextPtr = next; + return XML_ERROR_SYNTAX; + } + start = next; } } @@ -6789,7 +6800,14 @@ return XML_ERROR_NO_MEMORY; } - const char *next; + const char *next = entityTextPtr; + + /* Nothing to tokenize. */ + if (entityTextPtr >= entityTextEnd) { + result = XML_ERROR_NONE; + goto endEntityValue; + } + for (;;) { next = entityTextPtr; /* XmlEntityValueTok doesn't always set the last arg */ @@ -7439,16 +7457,24 @@ else { if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) return XML_FALSE; - prefix - = (PREFIX *)lookup(parser, &dtd->prefixes, - poolStart(&parser->m_tempPool), sizeof(PREFIX)); - if (! prefix) + const XML_Char *const prefixName = poolCopyStringNoFinish( + &dtd->pool, poolStart(&parser->m_tempPool)); + if (! prefixName) { return XML_FALSE; - if (prefix->name == poolStart(&parser->m_tempPool)) { - prefix->name = poolCopyString(&dtd->pool, prefix->name); - if (! prefix->name) - return XML_FALSE; } + + prefix = (PREFIX *)lookup(parser, &dtd->prefixes, prefixName, + sizeof(PREFIX)); + + const bool prefixNameUsed = prefix && prefix->name == prefixName; + if (prefixNameUsed) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + + if (! prefix) + return XML_FALSE; + poolDiscard(&parser->m_tempPool); } for (context = s + 1; *context != CONTEXT_SEP && *context != XML_T('\0'); @@ -8036,6 +8062,23 @@ return s; } +// A version of `poolCopyString` that does not call `poolFinish` +// and reverts any partial advancement upon failure. +static const XML_Char *FASTCALL +poolCopyStringNoFinish(STRING_POOL *pool, const XML_Char *s) { + const XML_Char *const original = s; + do { + if (! poolAppendChar(pool, *s)) { + // Revert any previously successful advancement + const ptrdiff_t advancedBy = s - original; + if (advancedBy > 0) + pool->ptr -= advancedBy; + return NULL; + } + } while (*s++); + return pool->start; +} + static const XML_Char * poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) { if (! pool->ptr && ! poolGrow(pool)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/xmlrole.c new/expat-2.7.5/lib/xmlrole.c --- old/expat-2.7.4/lib/xmlrole.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/xmlrole.c 2026-03-17 20:51:51.000000000 +0100 @@ -12,7 +12,7 @@ Copyright (c) 2002-2006 Karl Waclawek <[email protected]> Copyright (c) 2002-2003 Fred L. Drake, Jr. <[email protected]> Copyright (c) 2005-2009 Steven Solie <[email protected]> - Copyright (c) 2016-2023 Sebastian Pipping <[email protected]> + Copyright (c) 2016-2026 Sebastian Pipping <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> Copyright (c) 2021 Donghee Na <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/xmltok.c new/expat-2.7.5/lib/xmltok.c --- old/expat-2.7.4/lib/xmltok.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/xmltok.c 2026-03-17 20:51:51.000000000 +0100 @@ -12,7 +12,7 @@ Copyright (c) 2002 Greg Stein <[email protected]> Copyright (c) 2002-2016 Karl Waclawek <[email protected]> Copyright (c) 2005-2009 Steven Solie <[email protected]> - Copyright (c) 2016-2024 Sebastian Pipping <[email protected]> + Copyright (c) 2016-2026 Sebastian Pipping <[email protected]> Copyright (c) 2016 Pascal Cuoq <[email protected]> Copyright (c) 2016 Don Lewis <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/lib/xmltok_ns.c new/expat-2.7.5/lib/xmltok_ns.c --- old/expat-2.7.4/lib/xmltok_ns.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/lib/xmltok_ns.c 2026-03-17 20:51:51.000000000 +0100 @@ -11,7 +11,7 @@ Copyright (c) 2002 Greg Stein <[email protected]> Copyright (c) 2002 Fred L. Drake, Jr. <[email protected]> Copyright (c) 2002-2006 Karl Waclawek <[email protected]> - Copyright (c) 2017-2021 Sebastian Pipping <[email protected]> + Copyright (c) 2017-2026 Sebastian Pipping <[email protected]> Copyright (c) 2025 Alfonso Gregory <[email protected]> Licensed under the MIT license: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/tests/basic_tests.c new/expat-2.7.5/tests/basic_tests.c --- old/expat-2.7.4/tests/basic_tests.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/tests/basic_tests.c 2026-03-17 18:28:19.000000000 +0100 @@ -3112,12 +3112,16 @@ #if defined(__MINGW32__) && ! defined(__MINGW64__) // workaround for mingw/wine32 on GitHub CI not being able to reach 1GiB // Can we make a big allocation? - void *big = malloc(maxbuf); - if (! big) { + for (int i = 1; i <= 2; i++) { + void *const big = malloc(maxbuf); + if (big != NULL) { + free(big); + break; + } // The big allocation failed. Let's be a little lenient. maxbuf = maxbuf / 2; + fprintf(stderr, "Reducing maxbuf to %d...\n", maxbuf); } - free(big); #endif for (int i = 0; i < num_prefixes; ++i) { @@ -6041,6 +6045,7 @@ const int document_length = 65536; char *const document = (char *)malloc(document_length); + assert_true(document != NULL); const XML_Memory_Handling_Suite memfuncs = { counting_malloc, @@ -6253,6 +6258,24 @@ } END_TEST +START_TEST(test_empty_ext_param_entity_in_value) { + const char *text = "<!DOCTYPE r SYSTEM \"ext.dtd\"><r/>"; + ExtOption options[] = { + {XCS("ext.dtd"), "<!ENTITY % pe SYSTEM \"empty\">" + "<!ENTITY ge \"%pe;\">"}, + {XCS("empty"), ""}, + {NULL, NULL}, + }; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + XML_SetUserData(g_parser, options); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + void make_basic_test_case(Suite *s) { TCase *tc_basic = tcase_create("basic tests"); @@ -6500,6 +6523,7 @@ tcase_add_test(tc_basic, test_empty_element_abort); tcase_add_test__ifdef_xml_dtd(tc_basic, test_pool_integrity_with_unfinished_attr); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_empty_ext_param_entity_in_value); tcase_add_test__if_xml_ge(tc_basic, test_entity_ref_no_elements); tcase_add_test__if_xml_ge(tc_basic, test_deep_nested_entity); tcase_add_test__if_xml_ge(tc_basic, test_deep_nested_attribute_entity); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/tests/misc_tests.c new/expat-2.7.5/tests/misc_tests.c --- old/expat-2.7.4/tests/misc_tests.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/tests/misc_tests.c 2026-03-17 20:51:51.000000000 +0100 @@ -212,7 +212,7 @@ if (! versions_equal(&read_version, &parsed_version)) fail("Version mismatch"); - if (xcstrcmp(version_text, XCS("expat_2.7.4")) + if (xcstrcmp(version_text, XCS("expat_2.7.5")) != 0) /* needs bump on releases */ fail("XML_*_VERSION in expat.h out of sync?\n"); } @@ -772,6 +772,35 @@ } END_TEST +START_TEST(test_misc_no_infinite_loop_issue_1161) { + XML_Parser parser = XML_ParserCreate(NULL); + + const char *text = "<!DOCTYPE d SYSTEM 'secondary.txt'>"; + + struct ExtOption options[] = { + {XCS("secondary.txt"), + "<!ENTITY % p SYSTEM 'tertiary.txt'><!ENTITY g '%p;'>"}, + {XCS("tertiary.txt"), "<?xml version='1.0'?><a"}, + {NULL, NULL}, + }; + + XML_SetUserData(parser, options); + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(parser, external_entity_optioner); + + assert_true(_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR); + +#if defined(XML_DTD) + assert_true(XML_GetErrorCode(parser) == XML_ERROR_EXTERNAL_ENTITY_HANDLING); +#else + assert_true(XML_GetErrorCode(parser) == XML_ERROR_NO_ELEMENTS); +#endif + + XML_ParserFree(parser); +} +END_TEST + void make_miscellaneous_test_case(Suite *s) { TCase *tc_misc = tcase_create("miscellaneous tests"); @@ -802,4 +831,5 @@ tcase_add_test(tc_misc, test_misc_expected_event_ptr_issue_980); tcase_add_test(tc_misc, test_misc_sync_entity_tolerated); tcase_add_test(tc_misc, test_misc_async_entity_rejected); + tcase_add_test(tc_misc, test_misc_no_infinite_loop_issue_1161); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/tests/nsalloc_tests.c new/expat-2.7.5/tests/nsalloc_tests.c --- old/expat-2.7.4/tests/nsalloc_tests.c 2026-01-29 20:13:38.000000000 +0100 +++ new/expat-2.7.5/tests/nsalloc_tests.c 2026-03-17 18:27:57.000000000 +0100 @@ -1505,6 +1505,32 @@ } END_TEST +/* Verify that retry after OOM in setContext() does not crash. + */ +START_TEST(test_nsalloc_setContext_zombie) { + const char *text = "<doc>Hello</doc>"; + unsigned int i; + const unsigned int max_alloc_count = 30; + + for (i = 0; i < max_alloc_count; i++) { + g_allocation_count = (int)i; + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* Retry on the same parser — must not crash */ + g_allocation_count = ALLOC_ALWAYS_SUCCEED; + XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE); + + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at maximum allocation count"); +} +END_TEST + void make_nsalloc_test_case(Suite *s) { TCase *tc_nsalloc = tcase_create("namespace allocation tests"); @@ -1539,4 +1565,5 @@ tcase_add_test__if_xml_ge(tc_nsalloc, test_nsalloc_long_default_in_ext); tcase_add_test(tc_nsalloc, test_nsalloc_long_systemid_in_ext); tcase_add_test(tc_nsalloc, test_nsalloc_prefixed_element); + tcase_add_test(tc_nsalloc, test_nsalloc_setContext_zombie); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/win32/expat.iss new/expat-2.7.5/win32/expat.iss --- old/expat-2.7.4/win32/expat.iss 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/win32/expat.iss 2026-03-17 20:51:51.000000000 +0100 @@ -38,7 +38,7 @@ ; OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE ; USE OR OTHER DEALINGS IN THE SOFTWARE. -#define expatVer "2.7.4" +#define expatVer "2.7.5" [Setup] AppName=Expat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/xmlwf/xmlfile.c new/expat-2.7.5/xmlwf/xmlfile.c --- old/expat-2.7.4/xmlwf/xmlfile.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/xmlwf/xmlfile.c 2026-03-17 20:51:51.000000000 +0100 @@ -11,7 +11,7 @@ Copyright (c) 2002-2003 Fred L. Drake, Jr. <[email protected]> Copyright (c) 2004-2006 Karl Waclawek <[email protected]> Copyright (c) 2005-2007 Steven Solie <[email protected]> - Copyright (c) 2016-2025 Sebastian Pipping <[email protected]> + Copyright (c) 2016-2026 Sebastian Pipping <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> Copyright (c) 2021 Donghee Na <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/expat-2.7.4/xmlwf/xmlwf.c new/expat-2.7.5/xmlwf/xmlwf.c --- old/expat-2.7.4/xmlwf/xmlwf.c 2026-01-31 12:17:15.000000000 +0100 +++ new/expat-2.7.5/xmlwf/xmlwf.c 2026-03-17 20:51:51.000000000 +0100 @@ -11,7 +11,7 @@ Copyright (c) 2001-2003 Fred L. Drake, Jr. <[email protected]> Copyright (c) 2004-2009 Karl Waclawek <[email protected]> Copyright (c) 2005-2007 Steven Solie <[email protected]> - Copyright (c) 2016-2025 Sebastian Pipping <[email protected]> + Copyright (c) 2016-2026 Sebastian Pipping <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> Copyright (c) 2020 Joe Orton <[email protected]> ++++++ expat.keyring ++++++ --- /var/tmp/diff_new_pack.6dIyht/_old 2026-03-31 15:21:54.323388979 +0200 +++ /var/tmp/diff_new_pack.6dIyht/_new 2026-03-31 15:21:54.355390315 +0200 @@ -1,6 +1,6 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Comment: Hostname: Version: Hockeypuck 2.2 +Comment: Hostname: xsFNBFzUcE0BEACzkr4qR9zoM63YCJU/oQTJEtt7SR9Hcvntk351O5QQbNJS55Za h+XfiAl1j45yrxP+ve3xU64Cl/GctZMLgkx8Qd3JECZCUkm72cvlBF1bJ0hkvcJR @@ -15,93 +15,177 @@ 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 @@ -113,124 +197,88 @@ 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 -=2AOW +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 +=3quY -----END PGP PUBLIC KEY BLOCK-----
