Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package expat for openSUSE:Factory checked in at 2021-12-29 21:10:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/expat (Old) and /work/SRC/openSUSE:Factory/.expat.new.2520 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "expat" Wed Dec 29 21:10:37 2021 rev:63 rq:942810 version:2.4.2 Changes: -------- --- /work/SRC/openSUSE:Factory/expat/expat.changes 2021-06-02 22:10:41.404126750 +0200 +++ /work/SRC/openSUSE:Factory/.expat.new.2520/expat.changes 2021-12-29 21:10:39.318270659 +0100 @@ -1,0 +2,16 @@ +Mon Dec 27 16:02:14 UTC 2021 - Dirk M??ller <[email protected]> + +- update to 2.4.2: + * Link againgst libm for function "isnan" + * Include expat_config.h as early as possible + * Autotools: Include files with release archives: + - buildconf.sh + - fuzz/*.c + * Autotools: Sync CMake templates + * docs: Document that function XML_GetBuffer may return NULL + when asking for a buffer of 0 (zero) bytes size + * docs: Fix return value docs for both + XML_SetBillionLaughsAttackProtection* functions + * Version info bumped from 9:1:8 to 9:2:8 + +------------------------------------------------------------------- Old: ---- expat-2.4.1.tar.xz expat-2.4.1.tar.xz.asc New: ---- expat-2.4.2.tar.xz expat-2.4.2.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ expat.spec ++++++ --- /var/tmp/diff_new_pack.U9pCTm/_old 2021-12-29 21:10:39.930271162 +0100 +++ /var/tmp/diff_new_pack.U9pCTm/_new 2021-12-29 21:10:39.934271165 +0100 @@ -16,18 +16,18 @@ # -%global unversion 2_4_1 +%global unversion 2_4_2 Name: expat -Version: 2.4.1 +Version: 2.4.2 Release: 0 Summary: XML Parser Toolkit License: MIT Group: Development/Libraries/C and C++ URL: https://libexpat.github.io Source0: https://github.com/libexpat/libexpat/releases/download/R_%{unversion}/expat-%{version}.tar.xz -Source1: %{name}faq.html +Source1: https://github.com/libexpat/libexpat/releases/download/R_%{unversion}/expat-%{version}.tar.xz.asc Source2: baselibs.conf -Source3: https://github.com/libexpat/libexpat/releases/download/R_%{unversion}/expat-%{version}.tar.xz.asc +Source3: %{name}faq.html BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: pkgconfig @@ -63,7 +63,7 @@ %prep %setup -q -cp %{SOURCE1} . +cp %{SOURCE3} . rm -f examples/*.dsp %build @@ -93,19 +93,17 @@ %postun -n libexpat1 -p /sbin/ldconfig %files -%{_docdir}/%{name} %license COPYING -%doc README.md expatfaq.html +%doc AUTHORS README.md expatfaq.html %doc doc/reference.html doc/style.css doc/valid-xhtml10.png %doc examples/elements.c examples/outline.c examples/Makefile.am examples/Makefile.in -%doc AUTHORS Changes +%doc changelog %{_bindir}/xmlwf %files -n libexpat1 %{_libdir}/libexpat.so.* %files -n libexpat-devel - %{_includedir}/* %{_libdir}/libexpat.so %{_libdir}/pkgconfig/expat.pc ++++++ expat-2.4.1.tar.xz -> expat-2.4.2.tar.xz ++++++ ++++ 14883 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/CMake.README new/expat-2.4.2/CMake.README --- old/expat-2.4.1/CMake.README 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/CMake.README 2021-12-19 23:21:42.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.4.1 is the source directory of expat, add a subdirectory +Assuming ~/expat-2.4.2 is the source directory of expat, add a subdirectory build and change into that directory: -~/expat-2.4.1$ mkdir build && cd build -~/expat-2.4.1/build$ +~/expat-2.4.2$ mkdir build && cd build +~/expat-2.4.2/build$ From that directory, call cmake first, then call make, make test and make install in the usual way: -~/expat-2.4.1/build$ cmake .. +~/expat-2.4.2/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.4.1/build +-- Build files have been written to: /home/patrick/expat-2.4.2/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.4.1/build$ make && make test && make install +~/expat-2.4.2/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' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/CMakeLists.txt new/expat-2.4.2/CMakeLists.txt --- old/expat-2.4.1/CMakeLists.txt 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/CMakeLists.txt 2021-12-19 23:21:42.000000000 +0100 @@ -64,7 +64,7 @@ project(expat VERSION - 2.4.1 + 2.4.2 LANGUAGES C ) @@ -106,6 +106,10 @@ else() set(_EXPAT_SHARED_LIBS_DEFAULT ON) endif() +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE NoConfig) # so that accessing CMAKE_*_POSTFIX will be waterproof +endif() +string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER) # # Configuration @@ -302,10 +306,12 @@ if (EXPAT_MSVC_STATIC_CRT) message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}") foreach(flag_var + CMAKE_CXX_FLAGS_${_EXPAT_BUILD_TYPE_UPPER} CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_${_EXPAT_BUILD_TYPE_UPPER} CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL @@ -320,34 +326,37 @@ if(MSVC) add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) endif() -if(WIN32) - if(_EXPAT_UNICODE_WCHAR_T) - set(_POSTFIX_WIDE "w") - endif() - if(MSVC AND NOT EXPAT_SHARED_LIBS) - if(EXPAT_MSVC_STATIC_CRT) - set(_POSTFIX_CRT "MT") - else() - set(_POSTFIX_CRT "MD") - endif() +# +# Library filename postfix +# +if(_EXPAT_UNICODE) + set(_POSTFIX_WIDE "w") +endif() + +if(MSVC AND NOT EXPAT_SHARED_LIBS) + if(EXPAT_MSVC_STATIC_CRT) + set(_POSTFIX_CRT "MT") + else() + set(_POSTFIX_CRT "MD") endif() +endif() - foreach(postfix_var - CMAKE_DEBUG_POSTFIX - CMAKE_RELEASE_POSTFIX - CMAKE_MINSIZEREL_POSTFIX - CMAKE_RELWITHDEBINFO_POSTFIX - ) - if(postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX") - set(_POSTFIX_DEBUG "d") - else() - set(_POSTFIX_DEBUG "") - endif() +foreach(postfix_var + CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX + CMAKE_DEBUG_POSTFIX + CMAKE_RELEASE_POSTFIX + CMAKE_MINSIZEREL_POSTFIX + CMAKE_RELWITHDEBINFO_POSTFIX + ) + if(WIN32 AND postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX") + set(_POSTFIX_DEBUG "d") + else() + set(_POSTFIX_DEBUG "") # needs a reset because of being looped + endif() - set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. libexpat<postfix=[w][d][MD|MT]>.lib") - endforeach() -endif() + set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Library filename postfix, e.g. libexpat<postfix=[w][d][MD|MT]>.lib") +endforeach() # # C library @@ -370,33 +379,33 @@ set(_SHARED STATIC) endif() -# Avoid colliding with Expat.dll of Perl's XML::Parser::Expat -if(WIN32 AND NOT MINGW) - set(_EXPAT_OUTPUT_NAME libexpat) # CMAKE_*_POSTFIX applies, see above -else() - if(_EXPAT_UNICODE) - set(_EXPAT_OUTPUT_NAME expatw) - else() - set(_EXPAT_OUTPUT_NAME expat) - endif() -endif() - add_library(expat ${_SHARED} ${expat_SRCS}) +if(_EXPAT_LIBM_FOUND) + target_link_libraries(expat m) +endif() if(EXPAT_WITH_LIBBSD) target_link_libraries(expat ${LIB_BSD}) endif() set(LIBCURRENT 9) # sync -set(LIBREVISION 1) # with +set(LIBREVISION 2) # with set(LIBAGE 8) # configure.ac! math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") -set_property(TARGET expat PROPERTY OUTPUT_NAME "${_EXPAT_OUTPUT_NAME}") if(NOT WIN32) set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION}) set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE}) set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME}) endif() +if(WIN32 AND NOT MINGW) + # NOTE: This avoids a name collision with Expat.dll of Perl's XML::Parser::Expat + # on Windows by resorting to filename libexpat.dll since Expat 1.95.3. + # Everything but MSVC is already adding prefix "lib", automatically. + # NOTE: "set_property(TARGET expat PROPERTY PREFIX lib)" would only affect *.dll + # files but not *.lib files, so we have to rely on propert OUTPUT_NAME, instead. + # Property CMAKE_*_POSTFIX still applies. + set_property(TARGET expat PROPERTY OUTPUT_NAME libexpat) +endif() target_include_directories(expat INTERFACE @@ -420,23 +429,42 @@ # pkg-config file # if(EXPAT_BUILD_PKGCONFIG) - set(prefix ${CMAKE_INSTALL_PREFIX}) - set(exec_prefix "\${prefix}") - if(CMAKE_INSTALL_LIBDIR MATCHES "^/") - set(libdir "${CMAKE_INSTALL_LIBDIR}") + set(_expat_pkgconfig_libdir "${CMAKE_INSTALL_LIBDIR}") else() - set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") + set(_expat_pkgconfig_libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") endif() if(CMAKE_INSTALL_INCLUDEDIR MATCHES "^/") - set(includedir "${CMAKE_INSTALL_INCLUDEDIR}") + set(_expat_pkgconfig_includedir "${CMAKE_INSTALL_INCLUDEDIR}") else() - set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") + set(_expat_pkgconfig_includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") endif() - configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @ONLY) - expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + set_target_properties(expat PROPERTIES + pkgconfig_prefix "${CMAKE_INSTALL_PREFIX}" + pkgconfig_exec_prefix "\${prefix}" + pkgconfig_libdir "${_expat_pkgconfig_libdir}" + pkgconfig_includedir "${_expat_pkgconfig_includedir}" + pkgconfig_version "${PACKAGE_VERSION}") + + foreach(_build_type ${CMAKE_BUILD_TYPE} Debug Release RelWithDebInfo MinSizeRel) + string(TOLOWER "${_build_type}" _build_type_lower) + string(TOUPPER "${_build_type}" _build_type_upper) + set_property(TARGET expat PROPERTY "pkgconfig_${_build_type_lower}_name" "expat${CMAKE_${_build_type_upper}_POSTFIX}") + if(_EXPAT_LIBM_FOUND) + set_property(TARGET expat PROPERTY "pkgconfig_libm" "-lm") + else() + set_property(TARGET expat PROPERTY "pkgconfig_libm" "") + endif() + endforeach() + + file(GENERATE + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/expat.pc + INPUT ${PROJECT_SOURCE_DIR}/expat.pc.cmake + TARGET expat) + + expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) endif() # @@ -453,6 +481,9 @@ add_executable(xmlwf ${xmlwf_SRCS}) set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) target_link_libraries(xmlwf expat) + if(_EXPAT_LIBM_FOUND) + target_link_libraries(xmlwf m) + endif() expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR}) if(MINGW AND _EXPAT_UNICODE_WCHAR_T) @@ -526,6 +557,11 @@ set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) expat_add_test(runtestspp $<TARGET_FILE:runtestspp>) + if(_EXPAT_LIBM_FOUND) + target_link_libraries(runtests m) + target_link_libraries(runtestspp m) + endif() + if(EXPAT_WITH_LIBBSD) target_link_libraries(runtests ${LIB_BSD}) target_link_libraries(runtestspp ${LIB_BSD}) @@ -729,20 +765,31 @@ else() set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR") endif() -string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER) +# NOTE: We're not accessing global property GENERATOR_IS_MULTI_CONFIG +# because that would require CMake >=3.9 +if(CMAKE_CONFIGURATION_TYPES) + set(_EXPAT_GENERATOR_IS_MULTI_CONFIG TRUE) +else() + set(_EXPAT_GENERATOR_IS_MULTI_CONFIG FALSE) +endif() message(STATUS "===========================================================================") message(STATUS "") message(STATUS "Configuration") +message(STATUS " Generator .................. ${CMAKE_GENERATOR}") +if(_EXPAT_GENERATOR_IS_MULTI_CONFIG) + message(STATUS " Build types ................ ${CMAKE_CONFIGURATION_TYPES}") +else() + message(STATUS " Build type ................. ${CMAKE_BUILD_TYPE}") +endif() message(STATUS " Prefix ..................... ${CMAKE_INSTALL_PREFIX}") -message(STATUS " Build type ................. ${CMAKE_BUILD_TYPE}") message(STATUS " Shared libraries ........... ${EXPAT_SHARED_LIBS}") if(MSVC) message(STATUS " Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}") endif() message(STATUS " Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}") -if(WIN32) - message(STATUS " Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}") +if(NOT _EXPAT_GENERATOR_IS_MULTI_CONFIG) + message(STATUS " Library name postfix ....... ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}") endif() message(STATUS "") message(STATUS " Build documentation ........ ${EXPAT_BUILD_DOCS}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/Changes new/expat-2.4.2/Changes --- old/expat-2.4.1/Changes 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/Changes 2021-12-19 23:21:42.000000000 +0100 @@ -2,6 +2,29 @@ https://github.com/libexpat/libexpat/labels/help%20wanted If you can help, please get in touch. Thanks! +Release 2.4.2 Sun December 19 2021 + Other changes: + #509 #510 Link againgst libm for function "isnan" + #513 #514 Include expat_config.h as early as possible + #498 Autotools: Include files with release archives: + - buildconf.sh + - fuzz/*.c + #507 #519 Autotools: Sync CMake templates + #495 #524 CMake: MinGW: Fix pkg-config section "Libs" for + - non-release build types (e.g. -DCMAKE_BUILD_TYPE=Debug) + - multi-config CMake generators (e.g. Ninja Multi-Config) + #502 #503 docs: Document that function XML_GetBuffer may return NULL + when asking for a buffer of 0 (zero) bytes size + #522 #523 docs: Fix return value docs for both + XML_SetBillionLaughsAttackProtection* functions + #525 #526 Version info bumped from 9:1:8 to 9:2:8; + see https://verbump.de/ for what these numbers do + + Special thanks to: + Dong-hee Na + Joergen Ibsen + Kai Pastor + Release 2.4.1 Sun May 23 2021 Bug fixes: #488 #490 Autotools: Fix installed header expat_config.h for multilib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/ConfigureChecks.cmake new/expat-2.4.2/ConfigureChecks.cmake --- old/expat-2.4.1/ConfigureChecks.cmake 2021-05-07 14:13:50.000000000 +0200 +++ new/expat-2.4.2/ConfigureChecks.cmake 2021-12-15 15:25:31.000000000 +0100 @@ -2,6 +2,7 @@ include(CheckCSourceCompiles) include(CheckIncludeFile) include(CheckIncludeFiles) +include(CheckLibraryExists) include(CheckSymbolExists) include(TestBigEndian) @@ -64,3 +65,5 @@ check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING) check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY) + +check_library_exists(m cos "" _EXPAT_LIBM_FOUND) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/Makefile.am new/expat-2.4.2/Makefile.am --- old/expat-2.4.1/Makefile.am 2021-05-22 23:15:56.000000000 +0200 +++ new/expat-2.4.2/Makefile.am 2021-12-15 15:25:31.000000000 +0100 @@ -75,6 +75,7 @@ CMakeLists.txt \ CMake.README \ ConfigureChecks.cmake \ + expat.pc.cmake \ expat_config.h.cmake _EXTRA_DIST_WINDOWS = \ @@ -90,9 +91,13 @@ conftools/expat.m4 \ conftools/get-version.sh \ \ + fuzz/xml_parsebuffer_fuzzer.c \ + fuzz/xml_parse_fuzzer.c \ + \ xmlwf/xmlwf_helpgen.py \ xmlwf/xmlwf_helpgen.sh \ \ + buildconf.sh \ Changes \ README.md \ \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/README.md new/expat-2.4.2/README.md --- old/expat-2.4.1/README.md 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/README.md 2021-12-19 23:21:42.000000000 +0100 @@ -5,7 +5,7 @@ [](https://github.com/libexpat/libexpat/releases) -# Expat, Release 2.4.1 +# Expat, Release 2.4.2 This is Expat, a C library for parsing XML, started by [James Clark](https://en.wikipedia.org/wiki/James_Clark_%28programmer%29) in 1997. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/buildconf.sh new/expat-2.4.2/buildconf.sh --- old/expat-2.4.1/buildconf.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/expat-2.4.2/buildconf.sh 2021-11-26 15:12:39.000000000 +0100 @@ -0,0 +1,55 @@ +#! /usr/bin/env bash +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017-2021 Sebastian Pipping <[email protected]> +# Copyright (c) 2018 Marco Maggi <[email protected]> +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +set -e + +# File expat_config.h.in (as generated by autoheader by autoreconf) contains +# macro SIZEOF_VOID_P which is (1) not really needed by Expat as of today and +# (2) a problem to "multilib" systems with one shared installed +# /usr/include/expat_config.h for two Expats with different "void *" sizes +# installed in e.g. /usr/lib32 and /usr/lib64. Hence we patch macro +# SIZEOF_VOID_P out of template expat_config.h.in so that configure will +# not put SIZEOF_VOID_P in the eventual expat_config.h. +patch_expat_config_h_in() { + local filename="$1" + local sizeof_void_p_line_number="$(fgrep -n SIZEOF_VOID_P "${filename}" | awk -F: '{print $1}')" + [[ ${sizeof_void_p_line_number} =~ ^[0-9]+$ ]] # cheap assert + local first_line_to_delete=$(( sizeof_void_p_line_number - 1 )) + local last_line_to_delete=$(( sizeof_void_p_line_number + 1 )) + # Note: Avoiding "sed -i" only for macOS portability. + local tempfile="$(mktemp)" + sed "${first_line_to_delete},${last_line_to_delete}d" "${filename}" > "${tempfile}" + mv "${tempfile}" "${filename}" +} + +autoreconf --warnings=all --install --verbose "$@" + +patch_expat_config_h_in expat_config.h.in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/cmake/autotools/expat-config-version.cmake.in new/expat-2.4.2/cmake/autotools/expat-config-version.cmake.in --- old/expat-2.4.1/cmake/autotools/expat-config-version.cmake.in 2021-05-22 23:15:56.000000000 +0200 +++ new/expat-2.4.2/cmake/autotools/expat-config-version.cmake.in 2021-12-15 15:25:31.000000000 +0100 @@ -17,6 +17,9 @@ if("@PACKAGE_VERSION@" MATCHES "^([0-9]+)\\.") set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") + if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0) + string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}") + endif() else() set(CVF_VERSION_MAJOR "@PACKAGE_VERSION@") endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/cmake/autotools/expat-noconfig__linux.cmake.in new/expat-2.4.2/cmake/autotools/expat-noconfig__linux.cmake.in --- old/expat-2.4.1/cmake/autotools/expat-noconfig__linux.cmake.in 2021-05-22 23:15:56.000000000 +0200 +++ new/expat-2.4.2/cmake/autotools/expat-noconfig__linux.cmake.in 2021-12-15 15:25:31.000000000 +0100 @@ -1,11 +1,11 @@ #---------------------------------------------------------------- -# Generated CMake target import file. +# Generated CMake target import file for configuration "NoConfig". #---------------------------------------------------------------- # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) -# Import target "expat::expat" for configuration "" +# Import target "expat::expat" for configuration "NoConfig" set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) set_target_properties(expat::expat PROPERTIES IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/@LIBDIR_BASENAME@/libexpat.so.@SO_MAJOR@.@SO_MINOR@.@SO_PATCH@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/cmake/autotools/expat-noconfig__macos.cmake.in new/expat-2.4.2/cmake/autotools/expat-noconfig__macos.cmake.in --- old/expat-2.4.1/cmake/autotools/expat-noconfig__macos.cmake.in 2021-05-22 23:15:56.000000000 +0200 +++ new/expat-2.4.2/cmake/autotools/expat-noconfig__macos.cmake.in 2021-12-15 15:25:31.000000000 +0100 @@ -1,11 +1,11 @@ #---------------------------------------------------------------- -# Generated CMake target import file. +# Generated CMake target import file for configuration "NoConfig". #---------------------------------------------------------------- # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) -# Import target "expat::expat" for configuration "" +# Import target "expat::expat" for configuration "NoConfig" set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) set_target_properties(expat::expat PROPERTIES IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/@LIBDIR_BASENAME@/libexpat.@SO_MAJOR@.@SO_MINOR@.@[email protected]" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/cmake/autotools/expat-noconfig__windows.cmake.in new/expat-2.4.2/cmake/autotools/expat-noconfig__windows.cmake.in --- old/expat-2.4.1/cmake/autotools/expat-noconfig__windows.cmake.in 2021-05-22 23:15:56.000000000 +0200 +++ new/expat-2.4.2/cmake/autotools/expat-noconfig__windows.cmake.in 2021-12-15 15:25:31.000000000 +0100 @@ -1,11 +1,11 @@ #---------------------------------------------------------------- -# Generated CMake target import file. +# Generated CMake target import file for configuration "NoConfig". #---------------------------------------------------------------- # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) -# Import target "expat::expat" for configuration "" +# Import target "expat::expat" for configuration "NoConfig" set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) set_target_properties(expat::expat PROPERTIES IMPORTED_IMPLIB_NOCONFIG "${_IMPORT_PREFIX}/@LIBDIR_BASENAME@/libexpat.dll.a" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/cmake/autotools/expat.cmake new/expat-2.4.2/cmake/autotools/expat.cmake --- old/expat-2.4.1/cmake/autotools/expat.cmake 2021-05-11 16:11:15.000000000 +0200 +++ new/expat-2.4.2/cmake/autotools/expat.cmake 2021-12-15 15:25:31.000000000 +0100 @@ -1,10 +1,10 @@ # Generated by CMake -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6) message(FATAL_ERROR "CMake >= 2.6.0 required") endif() cmake_policy(PUSH) -cmake_policy(VERSION 2.6...3.18) +cmake_policy(VERSION 2.6...3.20) #---------------------------------------------------------------- # Generated CMake target import file. #---------------------------------------------------------------- @@ -55,8 +55,13 @@ set_target_properties(expat::expat PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "m" ) +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + # Load information for each installed configuration. get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) file(GLOB CONFIG_FILES "${_DIR}/expat-*.cmake") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/configure.ac new/expat-2.4.2/configure.ac --- old/expat-2.4.1/configure.ac 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/configure.ac 2021-12-19 23:21:42.000000000 +0100 @@ -82,7 +82,7 @@ dnl LIBCURRENT=9 # sync -LIBREVISION=1 # with +LIBREVISION=2 # with LIBAGE=8 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) @@ -186,6 +186,7 @@ AM_CONDITIONAL([_INTERNAL_MIN_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_MIN_SIZE >/dev/null]) AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_LARGE_SIZE >/dev/null]) +LT_LIB_M AC_ARG_WITH([libbsd], [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])], @@ -394,9 +395,6 @@ AC_SUBST([AM_CXXFLAGS]) AC_SUBST([AM_LDFLAGS]) -dnl updating _EXPAT_OUTPUT_NAME variable to effect the package name in expat.pc file (issue #361) -AC_SUBST(_EXPAT_OUTPUT_NAME, ["$PACKAGE_NAME"]) - AS_CASE("${host_os}", [darwin*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__macos.cmake.in], [mingw*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__windows.cmake.in], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/doc/reference.html new/expat-2.4.2/doc/reference.html --- old/expat-2.4.1/doc/reference.html 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/doc/reference.html 2021-12-19 23:21:42.000000000 +0100 @@ -17,6 +17,7 @@ Copyright (c) 2017-2021 Sebastian Pipping <[email protected]> Copyright (c) 2017 Jakub Wilk <[email protected]> Copyright (c) 2021 Tomas Korbar <[email protected]> + Copyright (c) 2021 Nicolas Cavallari <[email protected]> Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -48,7 +49,7 @@ <div> <h1> The Expat XML Parser - <small>Release 2.4.1</small> + <small>Release 2.4.2</small> </h1> </div> <div class="content"> @@ -1115,7 +1116,8 @@ <div class="fcndef"> Obtain a buffer of size <code>len</code> to read a piece of the document into. A NULL value is returned if Expat can't allocate enough memory for -this buffer. This has to be called prior to every call to +this buffer. A NULL value may also be returned if <code>len</code> is zero. +This has to be called prior to every call to <code><a href= "#XML_ParseBuffer" >XML_ParseBuffer</a></code>. A typical use would look like this: @@ -2100,7 +2102,7 @@ <a href="https://en.wikipedia.org/wiki/Billion_laughs_attack">billion laughs attacks</a> (default: <code>100.0</code>) of parser <code>p</code> to <code>maximumAmplificationFactor</code>, and - returns <code>XML_TRUE</code> upon success and <code>XML_TRUE</code> upon error. + returns <code>XML_TRUE</code> upon success and <code>XML_FALSE</code> upon error. </p> The amplification factor is calculated as .. @@ -2150,7 +2152,7 @@ <a href="https://en.wikipedia.org/wiki/Billion_laughs_attack">billion laughs attacks</a> (default: <code>8 MiB</code>) of parser <code>p</code> to <code>activationThresholdBytes</code>, and - returns <code>XML_TRUE</code> upon success and <code>XML_TRUE</code> upon error. + returns <code>XML_TRUE</code> upon success and <code>XML_FALSE</code> upon error. </p> <p>For a call to <code>XML_SetBillionLaughsAttackProtectionActivationThreshold</code> to succeed:</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/doc/xmlwf.1 new/expat-2.4.2/doc/xmlwf.1 --- old/expat-2.4.1/doc/xmlwf.1 2021-05-23 00:53:16.000000000 +0200 +++ new/expat-2.4.2/doc/xmlwf.1 2021-12-19 23:30:45.000000000 +0100 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH XMLWF 1 "May 23, 2021" "" "" +.TH XMLWF 1 "December 19, 2021" "" "" .SH NAME xmlwf \- Determines if an XML document is well-formed .SH SYNOPSIS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/doc/xmlwf.xml new/expat-2.4.2/doc/xmlwf.xml --- old/expat-2.4.1/doc/xmlwf.xml 2021-05-23 00:26:41.000000000 +0200 +++ new/expat-2.4.2/doc/xmlwf.xml 2021-12-19 23:21:42.000000000 +0100 @@ -22,7 +22,7 @@ <!ENTITY dhfirstname "<firstname>Scott</firstname>"> <!ENTITY dhsurname "<surname>Bronson</surname>"> <!-- Please adjust the date whenever revising the manpage. --> - <!ENTITY dhdate "<date>May 23, 2021</date>"> + <!ENTITY dhdate "<date>December 19, 2021</date>"> <!ENTITY dhsection "<manvolnum>1</manvolnum>"> <!ENTITY dhemail "<email>[email protected]</email>"> <!ENTITY dhusername "Scott Bronson"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/expat.pc.cmake new/expat-2.4.2/expat.pc.cmake --- old/expat-2.4.1/expat.pc.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/expat-2.4.2/expat.pc.cmake 2021-12-15 15:25:31.000000000 +0100 @@ -0,0 +1,11 @@ +prefix=$<TARGET_PROPERTY:pkgconfig_prefix> +exec_prefix=$<TARGET_PROPERTY:pkgconfig_exec_prefix> +libdir=$<TARGET_PROPERTY:pkgconfig_libdir> +includedir=$<TARGET_PROPERTY:pkgconfig_includedir> + +Name: $<TARGET_PROPERTY:pkgconfig_$<LOWER_CASE:$<CONFIG>>_name> +Version: $<TARGET_PROPERTY:pkgconfig_version> +Description: expat XML parser +URL: https://libexpat.github.io/ +Libs: -L${libdir} -l$<TARGET_PROPERTY:pkgconfig_$<LOWER_CASE:$<CONFIG>>_name> $<TARGET_PROPERTY:pkgconfig_libm> +Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/expat.pc.in new/expat-2.4.2/expat.pc.in --- old/expat-2.4.1/expat.pc.in 2021-05-07 14:13:50.000000000 +0200 +++ new/expat-2.4.2/expat.pc.in 2021-12-15 15:25:31.000000000 +0100 @@ -3,9 +3,9 @@ libdir=@libdir@ includedir=@includedir@ -Name: @_EXPAT_OUTPUT_NAME@ +Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ Description: expat XML parser -URL: http://www.libexpat.org -Libs: -L${libdir} -l@_EXPAT_OUTPUT_NAME@ +URL: https://libexpat.github.io/ +Libs: -L${libdir} -l@PACKAGE_NAME@ @LIBM@ Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/expat_config.h new/expat-2.4.2/expat_config.h --- old/expat-2.4.1/expat_config.h 2021-05-23 18:29:14.000000000 +0200 +++ new/expat-2.4.2/expat_config.h 2021-12-19 23:30:44.000000000 +0100 @@ -31,15 +31,15 @@ /* Define to 1 if you have the `bsd' library (-lbsd). */ /* #undef HAVE_LIBBSD */ -/* Define to 1 if you have the <memory.h> header file. */ -#define HAVE_MEMORY_H 1 - /* Define to 1 if you have a working `mmap' system call. */ #define HAVE_MMAP 1 /* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1 +/* Define to 1 if you have the <stdio.h> header file. */ +#define HAVE_STDIO_H 1 + /* Define to 1 if you have the <stdlib.h> header file. */ #define HAVE_STDLIB_H 1 @@ -77,7 +77,7 @@ #define PACKAGE_NAME "expat" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "expat 2.4.1" +#define PACKAGE_STRING "expat 2.4.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "expat" @@ -86,13 +86,15 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.4.1" +#define PACKAGE_VERSION "2.4.2" -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "2.4.1" +#define VERSION "2.4.2" /* 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' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/expat_config.h.in new/expat-2.4.2/expat_config.h.in --- old/expat-2.4.1/expat_config.h.in 2021-05-23 18:29:59.000000000 +0200 +++ new/expat-2.4.2/expat_config.h.in 2021-12-19 23:30:39.000000000 +0100 @@ -30,15 +30,15 @@ /* Define to 1 if you have the `bsd' library (-lbsd). */ #undef HAVE_LIBBSD -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the <stdio.h> header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H @@ -87,7 +87,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Version number of package */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/fuzz/xml_parse_fuzzer.c new/expat-2.4.2/fuzz/xml_parse_fuzzer.c --- old/expat-2.4.1/fuzz/xml_parse_fuzzer.c 1970-01-01 01:00:00.000000000 +0100 +++ new/expat-2.4.2/fuzz/xml_parse_fuzzer.c 2021-05-25 23:37:55.000000000 +0200 @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <assert.h> +#include <stdint.h> + +#include "expat.h" +#include "siphash.h" + +// Macros to convert preprocessor macros to string literals. See +// https://gcc.gnu.org/onlinedocs/gcc-3.4.3/cpp/Stringification.html +#define xstr(s) str(s) +#define str(s) #s + +// The encoder type that we wish to fuzz should come from the compile-time +// definition `ENCODING_FOR_FUZZING`. This allows us to have a separate fuzzer +// binary for +#ifndef ENCODING_FOR_FUZZING +# error "ENCODING_FOR_FUZZING was not provided to this fuzz target." +#endif + +// 16-byte deterministic hash key. +static unsigned char hash_key[16] = "FUZZING IS FUN!"; + +static void XMLCALL +start(void *userData, const XML_Char *name, const XML_Char **atts) { + (void)userData; + (void)name; + (void)atts; +} +static void XMLCALL +end(void *userData, const XML_Char *name) { + (void)userData; + (void)name; +} + +int +LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + XML_Parser p = XML_ParserCreate(xstr(ENCODING_FOR_FUZZING)); + assert(p); + + // Set the hash salt using siphash to generate a deterministic hash. + struct sipkey *key = sip_keyof(hash_key); + XML_SetHashSalt(p, (unsigned long)siphash24(data, size, key)); + + XML_SetElementHandler(p, start, end); + XML_Parse(p, (const XML_Char *)data, size, 0); + XML_Parse(p, (const XML_Char *)data, size, 1); + XML_ParserFree(p); + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/fuzz/xml_parsebuffer_fuzzer.c new/expat-2.4.2/fuzz/xml_parsebuffer_fuzzer.c --- old/expat-2.4.1/fuzz/xml_parsebuffer_fuzzer.c 1970-01-01 01:00:00.000000000 +0100 +++ new/expat-2.4.2/fuzz/xml_parsebuffer_fuzzer.c 2021-05-25 23:37:55.000000000 +0200 @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <assert.h> +#include <stdint.h> +#include <string.h> + +#include "expat.h" +#include "siphash.h" + +// Macros to convert preprocessor macros to string literals. See +// https://gcc.gnu.org/onlinedocs/gcc-3.4.3/cpp/Stringification.html +#define xstr(s) str(s) +#define str(s) #s + +// The encoder type that we wish to fuzz should come from the compile-time +// definition `ENCODING_FOR_FUZZING`. This allows us to have a separate fuzzer +// binary for +#ifndef ENCODING_FOR_FUZZING +# error "ENCODING_FOR_FUZZING was not provided to this fuzz target." +#endif + +// 16-byte deterministic hash key. +static unsigned char hash_key[16] = "FUZZING IS FUN!"; + +static void XMLCALL +start(void *userData, const XML_Char *name, const XML_Char **atts) { + (void)userData; + (void)name; + (void)atts; +} +static void XMLCALL +end(void *userData, const XML_Char *name) { + (void)userData; + (void)name; +} + +int +LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + if (size == 0) + return 0; + + XML_Parser p = XML_ParserCreate(xstr(ENCODING_FOR_FUZZING)); + assert(p); + XML_SetElementHandler(p, start, end); + + // Set the hash salt using siphash to generate a deterministic hash. + struct sipkey *key = sip_keyof(hash_key); + XML_SetHashSalt(p, (unsigned long)siphash24(data, size, key)); + + void *buf = XML_GetBuffer(p, size); + assert(buf); + + memcpy(buf, data, size); + XML_ParseBuffer(p, size, size == 0); + XML_ParserFree(p); + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/lib/Makefile.am new/expat-2.4.2/lib/Makefile.am --- old/expat-2.4.1/lib/Makefile.am 2021-05-14 22:10:07.000000000 +0200 +++ new/expat-2.4.2/lib/Makefile.am 2021-12-15 15:25:31.000000000 +0100 @@ -40,6 +40,7 @@ libexpat_la_LDFLAGS = \ @AM_LDFLAGS@ \ + @LIBM@ \ -no-undefined \ -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/lib/expat.h new/expat-2.4.2/lib/expat.h --- old/expat-2.4.1/lib/expat.h 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/lib/expat.h 2021-12-19 23:21:42.000000000 +0100 @@ -1041,7 +1041,7 @@ */ #define XML_MAJOR_VERSION 2 #define XML_MINOR_VERSION 4 -#define XML_MICRO_VERSION 1 +#define XML_MICRO_VERSION 2 #ifdef __cplusplus } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/lib/xmlparse.c new/expat-2.4.2/lib/xmlparse.c --- old/expat-2.4.1/lib/xmlparse.c 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/lib/xmlparse.c 2021-12-19 23:21:42.000000000 +0100 @@ -1,4 +1,4 @@ -/* 8539b9040d9d901366a62560a064af7cb99811335784b363abc039c5b0ebc416 (2.4.1+) +/* 0550bc9a27b099d462d8d1007271cfeaa39852f20cd0d5d2caeadaeb39516fbe (2.4.2+) __ __ _ ___\ \/ /_ __ __ _| |_ / _ \\ /| '_ \ / _` | __| @@ -32,6 +32,7 @@ Copyright (c) 2019 David Loffredo <[email protected]> Copyright (c) 2019-2020 Ben Wagner <[email protected]> Copyright (c) 2019 Vadim Zeitlin <[email protected]> + Copyright (c) 2021 Dong-hee Na <[email protected]> Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -54,6 +55,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#define XML_BUILDING_EXPAT 1 + +#include <expat_config.h> + #if ! defined(_GNU_SOURCE) # define _GNU_SOURCE 1 /* syscall prototype */ #endif @@ -84,14 +89,10 @@ # include <errno.h> #endif -#define XML_BUILDING_EXPAT 1 - #ifdef _WIN32 # include "winconfig.h" #endif -#include <expat_config.h> - #include "ascii.h" #include "expat.h" #include "siphash.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/lib/xmlrole.c new/expat-2.4.2/lib/xmlrole.c --- old/expat-2.4.1/lib/xmlrole.c 2021-05-14 22:10:07.000000000 +0200 +++ new/expat-2.4.2/lib/xmlrole.c 2021-12-15 15:25:31.000000000 +0100 @@ -15,6 +15,7 @@ Copyright (c) 2016-2021 Sebastian Pipping <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> + Copyright (c) 2021 Dong-hee Na <[email protected]> Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -37,14 +38,14 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include <expat_config.h> + #include <stddef.h> #ifdef _WIN32 # include "winconfig.h" #endif -#include <expat_config.h> - #include "expat_external.h" #include "internal.h" #include "xmlrole.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/lib/xmltok.c new/expat-2.4.2/lib/xmltok.c --- old/expat-2.4.1/lib/xmltok.c 2021-05-14 22:10:07.000000000 +0200 +++ new/expat-2.4.2/lib/xmltok.c 2021-12-15 15:25:31.000000000 +0100 @@ -20,6 +20,7 @@ Copyright (c) 2017 Benbuck Nason <[email protected]> Copyright (c) 2017 Jos?? Guti??rrez de la Concha <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> + Copyright (c) 2021 Dong-hee Na <[email protected]> Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -42,6 +43,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include <expat_config.h> + #include <stddef.h> #include <string.h> /* memcpy */ #include <stdbool.h> @@ -50,8 +53,6 @@ # include "winconfig.h" #endif -#include <expat_config.h> - #include "expat_external.h" #include "internal.h" #include "xmltok.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/tests/Makefile.am new/expat-2.4.2/tests/Makefile.am --- old/expat-2.4.1/tests/Makefile.am 2021-05-14 22:10:08.000000000 +0200 +++ new/expat-2.4.2/tests/Makefile.am 2021-12-15 15:25:31.000000000 +0100 @@ -57,6 +57,9 @@ runtests_LDADD = libruntests.a ../lib/libexpatinternal.la runtestspp_LDADD = libruntests.a ../lib/libexpatinternal.la +runtests_LDFLAGS = @AM_LDFLAGS@ @LIBM@ +runtestspp_LDFLAGS = @AM_LDFLAGS@ @LIBM@ + EXTRA_DIST = \ chardata.h \ structdata.h \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/tests/runtests.c new/expat-2.4.2/tests/runtests.c --- old/expat-2.4.1/tests/runtests.c 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/tests/runtests.c 2021-12-19 23:21:42.000000000 +0100 @@ -17,6 +17,7 @@ Copyright (c) 2018 Marco Maggi <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> Copyright (c) 2020 Tim Gates <[email protected]> + Copyright (c) 2021 Dong-hee Na <[email protected]> Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -39,12 +40,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include <expat_config.h> + #if defined(NDEBUG) # undef NDEBUG /* because test suite relies on assert(...) at the moment */ #endif -#include <expat_config.h> - #include <assert.h> #include <stdlib.h> #include <stdio.h> @@ -7351,7 +7352,7 @@ fail("Version mismatch"); #if ! defined(XML_UNICODE) || defined(XML_UNICODE_WCHAR_T) - if (xcstrcmp(version_text, XCS("expat_2.4.1"))) /* needs bump on releases */ + if (xcstrcmp(version_text, XCS("expat_2.4.2"))) /* needs bump on releases */ fail("XML_*_VERSION in expat.h out of sync?\n"); #else /* If we have XML_UNICODE defined but not XML_UNICODE_WCHAR_T diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/win32/expat.iss new/expat-2.4.2/win32/expat.iss --- old/expat-2.4.1/win32/expat.iss 2021-05-23 17:56:25.000000000 +0200 +++ new/expat-2.4.2/win32/expat.iss 2021-12-19 23:21:42.000000000 +0100 @@ -36,7 +36,7 @@ ; OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE ; USE OR OTHER DEALINGS IN THE SOFTWARE. -#define expatVer "2.4.1" +#define expatVer "2.4.2" [Setup] AppName=Expat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/xmlwf/Makefile.am new/expat-2.4.2/xmlwf/Makefile.am --- old/expat-2.4.1/xmlwf/Makefile.am 2021-05-14 22:10:08.000000000 +0200 +++ new/expat-2.4.2/xmlwf/Makefile.am 2021-12-15 15:25:31.000000000 +0100 @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2020 Sebastian Pipping <[email protected]> +# Copyright (c) 2017-2021 Sebastian Pipping <[email protected]> # Licensed under the MIT license: # # Permission is hereby granted, free of charge, to any person obtaining @@ -38,7 +38,7 @@ @[email protected] xmlwf_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib -xmlwf_LDFLAGS = @AM_LDFLAGS@ +xmlwf_LDFLAGS = @AM_LDFLAGS@ @LIBM@ if MINGW if UNICODE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/expat-2.4.1/xmlwf/xmlfile.c new/expat-2.4.2/xmlwf/xmlfile.c --- old/expat-2.4.1/xmlwf/xmlfile.c 2021-05-14 22:10:09.000000000 +0200 +++ new/expat-2.4.2/xmlwf/xmlfile.c 2021-12-15 15:25:31.000000000 +0100 @@ -14,6 +14,7 @@ Copyright (c) 2016-2021 Sebastian Pipping <[email protected]> Copyright (c) 2017 Rhodri James <[email protected]> Copyright (c) 2019 David Loffredo <[email protected]> + Copyright (c) 2021 Dong-hee Na <[email protected]> Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -36,6 +37,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include <expat_config.h> + #include <stdio.h> #include <stdlib.h> #include <stddef.h> @@ -46,8 +49,6 @@ # include "winconfig.h" #endif -#include <expat_config.h> - #include "expat.h" #include "internal.h" /* for UNUSED_P only */ #include "xmlfile.h"
