Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libxml2 for openSUSE:Factory checked 
in at 2023-04-21 14:15:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libxml2 (Old)
 and      /work/SRC/openSUSE:Factory/.libxml2.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libxml2"

Fri Apr 21 14:15:35 2023 rev:117 rq:1079409 version:2.10.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/libxml2/libxml2.changes  2023-02-07 
18:47:29.598618359 +0100
+++ /work/SRC/openSUSE:Factory/.libxml2.new.1533/libxml2.changes        
2023-04-21 14:15:39.798127118 +0200
@@ -1,0 +2,15 @@
+Tue Apr 11 12:37:32 UTC 2023 - Bjørn Lie <[email protected]>
+
+- Update to version 2.10.4:
+  + Security:
+    - [CVE-2023-29469, bsc#1210412] Hashing of empty dict strings 
+      isn’t deterministic
+    - [CVE-2023-28484, bsc#1210411] Fix null deref in 
+      xmlSchemaFixupComplexType
+    - schemas: Fix null-pointer-deref in
+      xmlSchemaCheckCOSSTDerivedOK
+  + Regressions:
+    - SAX2: Ignore namespaces in HTML documents
+    - io: Fix “buffer full” error with certain buffer sizes
+
+-------------------------------------------------------------------

Old:
----
  libxml2-2.10.3.tar.xz

New:
----
  libxml2-2.10.4.tar.xz

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

Other differences:
------------------
++++++ libxml2.spec ++++++
--- /var/tmp/diff_new_pack.oGE3gK/_old  2023-04-21 14:15:40.750132456 +0200
+++ /var/tmp/diff_new_pack.oGE3gK/_new  2023-04-21 14:15:40.762132523 +0200
@@ -25,7 +25,7 @@
 %endif
 
 Name:           libxml2%{?dash}%{flavor}
-Version:        2.10.3
+Version:        2.10.4
 Release:        0
 License:        MIT
 Summary:        A Library to Manipulate XML Files

++++++ libxml2-2.10.3.tar.xz -> libxml2-2.10.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/INSTALL new/libxml2-2.10.4/INSTALL
--- old/libxml2-2.10.3/INSTALL  1970-01-01 01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/INSTALL  2022-11-30 12:01:49.000000000 +0100
@@ -0,0 +1,368 @@
+Installation Instructions
+*************************
+
+   Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free
+Software Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell command './configure && make && make install'
+should configure, build, and install this package.  The following
+more-detailed instructions are generic; see the 'README' file for
+instructions specific to this package.  Some packages provide this
+'INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The 'configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions.  Finally, it creates a shell script 'config.status' that
+you can run in the future to recreate the current configuration, and a
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
+
+   It can also use an optional file (typically called 'config.cache' and
+enabled with '--cache-file=config.cache' or simply '-C') that saves the
+results of its tests to speed up reconfiguring.  Caching is disabled by
+default to prevent problems with accidental use of stale cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point 'config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'.  You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version of
+'autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. 'cd' to the directory containing the package's source code and type
+     './configure' to configure the package for your system.
+
+     Running 'configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type 'make' to compile the package.
+
+  3. Optionally, type 'make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type 'make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the 'make install' phase executed with root
+     privileges.
+
+  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior 'make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing 'make clean'.  To also remove the
+     files that 'configure' created (so you can compile the package for
+     a different kind of computer), type 'make distclean'.  There is
+     also a 'make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type 'make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide 'make
+     distcheck', which can by used by developers to test that all other
+     targets like 'make install' and 'make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the 'configure' script does not know about.  Run './configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give 'configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here is
+an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU 'make'.  'cd' to the
+directory where you want the object files and executables to go and run
+the 'configure' script.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.  This is known
+as a "VPATH" build.
+
+   With a non-GNU 'make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use 'make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple '-arch' options to the
+compiler but only a single '-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the 'lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc.  You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like '--bindir=DIR' to specify different values for particular
+kinds of files.  Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the default
+for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to 'configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+'make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, 'make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+'${prefix}'.  Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install time
+for the entire installation to be relocated.  The approach of makefile
+variable overrides for each directory variable is required by the GNU
+Coding Standards, and ideally causes no recompilation.  However, some
+platforms have known limitations with the semantics of shared libraries
+that end up requiring recompilation when using this method, particularly
+noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the 'DESTDIR' variable.  For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names.  The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+
+   Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System).  The
+'README' should mention any '--enable-' and '--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, 'configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of 'make' will be.  For these packages, running './configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with 'make V=1'; while running './configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with 'make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
+is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX 'make' updates targets which have the same timestamps as their
+prerequisites, which makes it generally unusable when shipped generated
+files such as 'configure' are involved.  Use GNU 'make' instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its '<wchar.h>' header file.  The option '-nodtk' can be used as a
+workaround.  If GNU CC is not installed, it is therefore recommended to
+try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
+in your 'PATH', put it _after_ '/usr/bin'.
+
+   On Haiku, software installed for all users goes in '/boot/common',
+not '/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features 'configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, 'configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+'--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file 'config.sub' for the possible values of each field.  If
+'config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option '--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with '--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for 'configure' scripts to share,
+you can create a site shell script called 'config.site' that gives
+default values for variables like 'CC', 'cache_file', and 'prefix'.
+'configure' looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists.  Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to 'configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the 'configure' command line, using 'VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified 'gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Autoconf limitation.  Until the limitation is lifted, you can use this
+workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+'configure' Invocation
+======================
+
+   'configure' recognizes the following options to control how it
+operates.
+
+'--help'
+'-h'
+     Print a summary of all of the options to 'configure', and exit.
+
+'--help=short'
+'--help=recursive'
+     Print a summary of the options unique to this package's
+     'configure', and exit.  The 'short' variant lists options used only
+     in the top level, while the 'recursive' variant lists options also
+     present in any nested packages.
+
+'--version'
+'-V'
+     Print the version of Autoconf used to generate the 'configure'
+     script, and exit.
+
+'--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+     disable caching.
+
+'--config-cache'
+'-C'
+     Alias for '--cache-file=config.cache'.
+
+'--quiet'
+'--silent'
+'-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to '/dev/null' (any error
+     messages will still be shown).
+
+'--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     'configure' can determine that directory automatically.
+
+'--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names:: for
+     more details, including other options available for fine-tuning the
+     installation locations.
+
+'--no-create'
+'-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+'configure' also accepts some other, not widely useful, options.  Run
+'configure --help' for more details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/Makefile.in 
new/libxml2-2.10.4/Makefile.in
--- old/libxml2-2.10.3/Makefile.in      2022-10-14 14:41:27.000000000 +0200
+++ new/libxml2-2.10.4/Makefile.in      2023-04-11 13:28:11.000000000 +0200
@@ -405,8 +405,8 @@
        $(srcdir)/libxml-2.0-uninstalled.pc.in \
        $(srcdir)/libxml-2.0.pc.in $(srcdir)/libxml.spec.in \
        $(srcdir)/libxml2-config.cmake.in $(srcdir)/xml2-config.in \
-       NEWS README.md TODO compile config.guess config.sub depcomp \
-       install-sh ltmain.sh missing py-compile
+       INSTALL NEWS README.md TODO compile config.guess config.sub \
+       depcomp install-sh ltmain.sh missing py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/NEWS new/libxml2-2.10.4/NEWS
--- old/libxml2-2.10.3/NEWS     2022-10-14 14:30:33.000000000 +0200
+++ new/libxml2-2.10.4/NEWS     2023-04-11 13:13:42.000000000 +0200
@@ -1,5 +1,19 @@
 NEWS file for libxml2
 
+v2.10.4: Apr 11 2023
+
+### Security
+
+- [CVE-2023-29469] Hashing of empty dict strings isn't deterministic
+- [CVE-2023-28484] Fix null deref in xmlSchemaFixupComplexType
+- schemas: Fix null-pointer-deref in xmlSchemaCheckCOSSTDerivedOK
+
+### Regressions
+
+- SAX2: Ignore namespaces in HTML documents
+- io: Fix "buffer full" error with certain buffer sizes
+
+
 v2.10.3: Oct 14 2022
 
 ### Security
@@ -60,6 +74,47 @@
 
 v2.10.0: Aug 17 2022
 
+### Breaking changes
+
+The Docbook parser module and all related symbols habe been removed completely.
+This was experimental code which never worked and generated a deprecation
+warning for 15+ years. The library's soname wasn't changed in order to allow
+seamless upgrades to later versions. If this concerns you, consider bumping
+soname yourself.
+
+Some other modules are now disabled by default and will eventually be removed
+completely:
+
+- Support for XPointer locations (ranges and points): This was based on
+  a W3C specification which never got beyond Working Draft status. To my
+  knowledge, there's no software supporting this spec which is still
+  maintained. You now have to enable this code by passing the
+  `--with-xptr-locs` configuration option. Be warned that this part of
+  the code base is buggy and had many security issues in the past.
+
+- Support for the built-in FTP client (`--with-ftp`).
+
+- Support for "legacy" functions (`--with-legacy`).
+
+If you're concerned about ABI stability and haven't disabled these modules
+already, add the following configuration options or bump soname yourself:
+
+    --with-ftp
+    --with-legacy
+    --with-xptr-locs
+
+Several functions of the public API were deprecated. Most of them should be
+completely unused and will generate a deprecation warning now.
+
+The autoconf build now uses the sysconfdir variable for the location of
+the default catalog file. The path changed from hardcoded /etc/xml/catalog
+to ${sysconfdir}/xml/catalog. The sysconfdir variable defaults to
+${prefix}/etc, prefix defaults to /usr/local, so without other options
+the path becomes /usr/local/etc/xml/catalog. If you want the old behavior,
+configure with
+
+    --sysconfdir=/etc
+
 ### Security
 
 - [CVE-2022-2309] Reset nsNr in xmlCtxtReset
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/SAX2.c new/libxml2-2.10.4/SAX2.c
--- old/libxml2-2.10.3/SAX2.c   2022-10-14 14:22:16.000000000 +0200
+++ new/libxml2-2.10.4/SAX2.c   2023-04-11 12:36:47.000000000 +0200
@@ -1608,12 +1608,15 @@
        ctxt->validate = 0;
     }
 
-
-    /*
-     * Split the full name into a namespace prefix and the tag name
-     */
-    name = xmlSplitQName(ctxt, fullname, &prefix);
-
+    if (ctxt->html) {
+        prefix = NULL;
+        name = xmlStrdup(fullname);
+    } else {
+        /*
+         * Split the full name into a namespace prefix and the tag name
+         */
+        name = xmlSplitQName(ctxt, fullname, &prefix);
+    }
 
     /*
      * Note : the namespace resolution is deferred until the end of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/configure new/libxml2-2.10.4/configure
--- old/libxml2-2.10.3/configure        2022-10-14 14:41:28.000000000 +0200
+++ new/libxml2-2.10.4/configure        2023-04-11 13:28:12.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for libxml2 2.10.3.
+# Generated by GNU Autoconf 2.71 for libxml2 2.10.4.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -618,8 +618,8 @@
 # Identity of this package.
 PACKAGE_NAME='libxml2'
 PACKAGE_TARNAME='libxml2'
-PACKAGE_VERSION='2.10.3'
-PACKAGE_STRING='libxml2 2.10.3'
+PACKAGE_VERSION='2.10.4'
+PACKAGE_STRING='libxml2 2.10.4'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1521,7 +1521,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 libxml2 2.10.3 to adapt to many kinds of systems.
+\`configure' configures libxml2 2.10.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1592,7 +1592,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libxml2 2.10.3:";;
+     short | recursive ) echo "Configuration of libxml2 2.10.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1766,7 +1766,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libxml2 configure 2.10.3
+libxml2 configure 2.10.4
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2079,7 +2079,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libxml2 $as_me 2.10.3, which was
+It was created by libxml2 $as_me 2.10.4, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -2917,7 +2917,7 @@
 
 LIBXML_MAJOR_VERSION=2
 LIBXML_MINOR_VERSION=10
-LIBXML_MICRO_VERSION=3
+LIBXML_MICRO_VERSION=4
 LIBXML_MICRO_VERSION_SUFFIX=
 
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
 LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + 
$LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
@@ -3456,7 +3456,7 @@
 
 # Define the identity of the package.
  PACKAGE='libxml2'
- VERSION='2.10.3'
+ VERSION='2.10.4'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -17406,7 +17406,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libxml2 $as_me 2.10.3, which was
+This file was extended by libxml2 $as_me 2.10.4, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17474,7 +17474,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-libxml2 config.status 2.10.3
+libxml2 config.status 2.10.4
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/configure.ac 
new/libxml2-2.10.4/configure.ac
--- old/libxml2-2.10.3/configure.ac     2022-10-14 14:30:41.000000000 +0200
+++ new/libxml2-2.10.4/configure.ac     2023-04-11 13:13:42.000000000 +0200
@@ -3,7 +3,7 @@
 
 m4_define([MAJOR_VERSION], 2)
 m4_define([MINOR_VERSION], 10)
-m4_define([MICRO_VERSION], 3)
+m4_define([MICRO_VERSION], 4)
 
 AC_INIT([libxml2],[MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION])
 AC_CONFIG_SRCDIR([entities.c])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/dict.c new/libxml2-2.10.4/dict.c
--- old/libxml2-2.10.3/dict.c   2022-10-14 14:20:48.000000000 +0200
+++ new/libxml2-2.10.4/dict.c   2023-04-11 13:13:42.000000000 +0200
@@ -453,7 +453,8 @@
 xmlDictComputeFastKey(const xmlChar *name, int namelen, int seed) {
     unsigned long value = seed;
 
-    if (name == NULL) return(0);
+    if ((name == NULL) || (namelen <= 0))
+        return(value);
     value += *name;
     value <<= 5;
     if (namelen > 10) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/result/HTML/names.html 
new/libxml2-2.10.4/result/HTML/names.html
--- old/libxml2-2.10.3/result/HTML/names.html   1970-01-01 01:00:00.000000000 
+0100
+++ new/libxml2-2.10.4/result/HTML/names.html   2023-04-11 12:36:47.000000000 
+0200
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
"http://www.w3.org/TR/REC-html40/loose.dtd";>
+<html>
+<body>
+  <o:p></o:p>
+</body>
+</html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/result/HTML/names.html.err 
new/libxml2-2.10.4/result/HTML/names.html.err
--- old/libxml2-2.10.3/result/HTML/names.html.err       1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/result/HTML/names.html.err       2023-04-11 
12:36:47.000000000 +0200
@@ -0,0 +1,3 @@
+./test/HTML/names.html:3: HTML parser error : Tag o:p invalid
+  <o:p></o:p>
+      ^
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/result/HTML/names.html.sax 
new/libxml2-2.10.4/result/HTML/names.html.sax
--- old/libxml2-2.10.3/result/HTML/names.html.sax       1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/result/HTML/names.html.sax       2023-04-11 
12:36:47.000000000 +0200
@@ -0,0 +1,20 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.characters(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+  , 3)
+SAX.startElement(o:p)
+SAX.error: Tag o:p invalid
+SAX.endElement(o:p)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.characters(
+, 1)
+SAX.endElement(html)
+SAX.characters(
+, 1)
+SAX.endDocument()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/result/schemas/issue491_0_0.err 
new/libxml2-2.10.4/result/schemas/issue491_0_0.err
--- old/libxml2-2.10.3/result/schemas/issue491_0_0.err  1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/result/schemas/issue491_0_0.err  2023-04-11 
13:13:42.000000000 +0200
@@ -0,0 +1 @@
+./test/schemas/issue491_0.xsd:8: element complexType: Schemas parser error : 
complex type 'ChildType': The content type of both, the type and its base type, 
must either 'mixed' or 'element-only'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/result/schemas/oss-fuzz-51295_0_0.err 
new/libxml2-2.10.4/result/schemas/oss-fuzz-51295_0_0.err
--- old/libxml2-2.10.3/result/schemas/oss-fuzz-51295_0_0.err    1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/result/schemas/oss-fuzz-51295_0_0.err    2023-04-11 
12:36:47.000000000 +0200
@@ -0,0 +1,2 @@
+./test/schemas/oss-fuzz-51295_0.xsd:2: element element: Schemas parser error : 
element decl. 'e': The element declaration 'e' defines a circular substitution 
group to element declaration 'e'.
+./test/schemas/oss-fuzz-51295_0.xsd:2: element element: Schemas parser error : 
element decl. 'e': The element declaration 'e' defines a circular substitution 
group to element declaration 'e'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/HTML/names.html 
new/libxml2-2.10.4/test/HTML/names.html
--- old/libxml2-2.10.3/test/HTML/names.html     1970-01-01 01:00:00.000000000 
+0100
+++ new/libxml2-2.10.4/test/HTML/names.html     2023-04-11 12:36:47.000000000 
+0200
@@ -0,0 +1,5 @@
+<html>
+<body>
+  <o:p></o:p>
+</body>
+</html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/recurse/_good2.xml 
new/libxml2-2.10.4/test/recurse/_good2.xml
--- old/libxml2-2.10.3/test/recurse/_good2.xml  2020-08-16 22:29:55.000000000 
+0200
+++ new/libxml2-2.10.4/test/recurse/_good2.xml  1970-01-01 01:00:00.000000000 
+0100
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-  <!ENTITY a "-">
-  <!ENTITY b "&a;&a;&a;&a;&a;">
-  <!ENTITY c "&b; text">
-]>
-<doc>&c;</doc>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/recurse/_lol7.xml 
new/libxml2-2.10.4/test/recurse/_lol7.xml
--- old/libxml2-2.10.3/test/recurse/_lol7.xml   2020-08-16 22:29:55.000000000 
+0200
+++ new/libxml2-2.10.4/test/recurse/_lol7.xml   1970-01-01 01:00:00.000000000 
+0100
@@ -1,148 +0,0 @@
-<!DOCTYPE doc [
-  <!ENTITY a "
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-">
-  <!ENTITY b "
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-">
-]>
-<doc>
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-</doc>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/recurse/_lol8.xml 
new/libxml2-2.10.4/test/recurse/_lol8.xml
--- old/libxml2-2.10.3/test/recurse/_lol8.xml   2020-08-16 22:29:55.000000000 
+0200
+++ new/libxml2-2.10.4/test/recurse/_lol8.xml   1970-01-01 01:00:00.000000000 
+0100
@@ -1,148 +0,0 @@
-<!DOCTYPE doc [
-  <!ENTITY a "
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-hahahahahahahahahahahahahahahahahahahahahahahahaha
-">
-  <!ENTITY b "
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;
-">
-]>
-<doc>
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;
-</doc>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/schemas/issue491_0.xml 
new/libxml2-2.10.4/test/schemas/issue491_0.xml
--- old/libxml2-2.10.3/test/schemas/issue491_0.xml      1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/test/schemas/issue491_0.xml      2023-04-11 
13:13:42.000000000 +0200
@@ -0,0 +1 @@
+<Child xmlns="http://www.test.com";>5</Child>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/schemas/issue491_0.xsd 
new/libxml2-2.10.4/test/schemas/issue491_0.xsd
--- old/libxml2-2.10.3/test/schemas/issue491_0.xsd      1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/test/schemas/issue491_0.xsd      2023-04-11 
13:13:42.000000000 +0200
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns="http://www.test.com"; targetNamespace="http://www.test.com"; 
elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:complexType name="BaseType">
+    <xs:simpleContent>
+      <xs:extension base="xs:int" />
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="ChildType">
+    <xs:complexContent>
+      <xs:extension base="BaseType">
+        <xs:sequence>
+          <xs:element name="bad" type="xs:int" minOccurs="0" maxOccurs="1"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="Child" type="ChildType" />
+</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/schemas/oss-fuzz-51295_0.xml 
new/libxml2-2.10.4/test/schemas/oss-fuzz-51295_0.xml
--- old/libxml2-2.10.3/test/schemas/oss-fuzz-51295_0.xml        1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/test/schemas/oss-fuzz-51295_0.xml        2023-04-11 
12:36:47.000000000 +0200
@@ -0,0 +1 @@
+<e/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/test/schemas/oss-fuzz-51295_0.xsd 
new/libxml2-2.10.4/test/schemas/oss-fuzz-51295_0.xsd
--- old/libxml2-2.10.3/test/schemas/oss-fuzz-51295_0.xsd        1970-01-01 
01:00:00.000000000 +0100
+++ new/libxml2-2.10.4/test/schemas/oss-fuzz-51295_0.xsd        2023-04-11 
12:36:47.000000000 +0200
@@ -0,0 +1,4 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+    <xs:element name="e" substitutionGroup="e"/>
+    <xs:element name="t" substitutionGroup="e" type='xs:decimal'/>
+</xs:schema>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/xmlIO.c new/libxml2-2.10.4/xmlIO.c
--- old/libxml2-2.10.3/xmlIO.c  2022-10-14 14:20:48.000000000 +0200
+++ new/libxml2-2.10.4/xmlIO.c  2023-04-11 12:36:47.000000000 +0200
@@ -3234,12 +3234,6 @@
     if ((len <= MINLEN) && (len != 4))
         len = MINLEN;
 
-    if (xmlBufAvail(in->buffer) <= 0) {
-       xmlIOErr(XML_IO_BUFFER_FULL, NULL);
-       in->error = XML_IO_BUFFER_FULL;
-       return(-1);
-    }
-
     if (xmlBufGrow(in->buffer, len + 1) < 0) {
         xmlIOErrMemory("growing input buffer");
         in->error = XML_ERR_NO_MEMORY;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libxml2-2.10.3/xmlschemas.c 
new/libxml2-2.10.4/xmlschemas.c
--- old/libxml2-2.10.3/xmlschemas.c     2022-10-14 14:20:48.000000000 +0200
+++ new/libxml2-2.10.4/xmlschemas.c     2023-04-11 13:13:42.000000000 +0200
@@ -13345,8 +13345,19 @@
            * declaration `resolved` to by the `actual value`
            * of the substitutionGroup [attribute], if present"
            */
-           if (elemDecl->subtypes == NULL)
-               elemDecl->subtypes = substHead->subtypes;
+           if (elemDecl->subtypes == NULL) {
+                if (substHead->subtypes == NULL) {
+                    /*
+                     * This can happen with self-referencing substitution
+                     * groups. The cycle will be detected later, but we have
+                     * to set subtypes to avoid null-pointer dereferences.
+                     */
+                   elemDecl->subtypes = xmlSchemaGetBuiltInType(
+                            XML_SCHEMAS_ANYTYPE);
+                } else {
+                   elemDecl->subtypes = substHead->subtypes;
+                }
+            }
        }
     }
     /*
@@ -18608,7 +18619,7 @@
                        "allowed to appear inside other model groups",
                        NULL, NULL);
 
-               } else if (! dummySequence) {
+               } else if ((!dummySequence) && (baseType->subtypes != NULL)) {
                    xmlSchemaTreeItemPtr effectiveContent =
                        (xmlSchemaTreeItemPtr) type->subtypes;
                    /*

Reply via email to