1 __ __ _ 2 ___\ \/ /_ __ __ _| |_ 3 / _ \\ /| '_ \ / _` | __| 4 | __// \| |_) | (_| | |_ 5 \___/_/\_\ .__/ \__,_|\__| 6 |_| XML parser 7 8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 9!! <blink>Expat is UNDERSTAFFED and WITHOUT FUNDING.</blink> !! 10!! ~~~~~~~~~~~~ !! 11!! The following topics need *additional skilled C developers* to progress !! 12!! in a timely manner or at all (loosely ordered by descending priority): !! 13!! !! 14!! - teaming up on researching and fixing future security reports and !! 15!! ClusterFuzz findings with few-days-max response times in communication !! 16!! in order to (1) have a sound fix ready before the end of a 90 days !! 17!! grace period and (2) in a sustainable manner, !! 18!! - helping CPython Expat bindings with supporting Expat's billion laughs !! 19!! attack protection API (https://github.com/python/cpython/issues/90949): !! 20!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! 21!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! 22!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! 23!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! 24!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! 25!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! 26!! - XML_SetReparseDeferralEnabled !! 27!! - implementing and auto-testing XML 1.0r5 support !! 28!! (needs discussion before pull requests), !! 29!! - smart ideas on fixing the Autotools CMake files generation issue !! 30!! without breaking CI (needs discussion before pull requests), !! 31!! - pushing migration from `int` to `size_t` further !! 32!! including edge-cases test coverage (needs discussion before anything). !! 33!! !! 34!! For details, please reach out via e-mail to sebastian@pipping.org so we !! 35!! can schedule a voice call on the topic, in English or German. !! 36!! !! 37!! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! 38!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 39 40Release 2.7.1 Thu March 27 2025 41 Bug fixes: 42 #980 #989 Restore event pointer behavior from Expat 2.6.4 43 (that the fix to CVE-2024-8176 changed in 2.7.0); 44 affected API functions are: 45 - XML_GetCurrentByteCount 46 - XML_GetCurrentByteIndex 47 - XML_GetCurrentColumnNumber 48 - XML_GetCurrentLineNumber 49 - XML_GetInputContext 50 51 Other changes: 52 #976 #977 Autotools: Integrate files "fuzz/xml_lpm_fuzzer.{cpp,proto}" 53 with Automake that were missing from 2.7.0 release tarballs 54 #983 #984 Fix printf format specifiers for 32bit Emscripten 55 #992 docs: Promote OpenSSF Best Practices self-certification 56 #978 tests/benchmark: Resolve mistaken double close 57 #986 Address compiler warnings 58 #990 #993 Version info bumped from 11:1:10 (libexpat*.so.1.10.1) 59 to 11:2:10 (libexpat*.so.1.10.2); see https://verbump.de/ 60 for what these numbers do 61 62 Infrastructure: 63 #982 CI: Start running Perl XML::Parser integration tests 64 #987 CI: Enforce Clang Static Analyzer clean code 65 #991 CI: Re-enable warning clang-analyzer-valist.Uninitialized 66 for clang-tidy 67 #981 CI: Cover compilation with musl 68 #983 #984 CI: Cover compilation with 32bit Emscripten 69 #976 #977 CI: Protect against fuzzer files missing from future 70 release archives 71 72 Special thanks to: 73 Berkay Eren Ürün 74 Matthew Fernandez 75 and 76 Perl XML::Parser 77 78Release 2.7.0 Thu March 13 2025 79 Security fixes: 80 #893 #973 CVE-2024-8176 -- Fix crash from chaining a large number 81 of entities caused by stack overflow by resolving use of 82 recursion, for all three uses of entities: 83 - general entities in character data ("<e>&g1;</e>") 84 - general entities in attribute values ("<e k1='&g1;'/>") 85 - parameter entities ("%p1;") 86 Known impact is (reliable and easy) denial of service: 87 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:H/RL:O/RC:C 88 (Base Score: 7.5, Temporal Score: 7.2) 89 Please note that a layer of compression around XML can 90 significantly reduce the minimum attack payload size. 91 92 Other changes: 93 #935 #937 Autotools: Make generated CMake files look for 94 libexpat.@SO_MAJOR@.dylib on macOS 95 #925 Autotools: Sync CMake templates with CMake 3.29 96 #945 #962 #966 CMake: Drop support for CMake <3.13 97 #942 CMake: Small fuzzing related improvements 98 #921 docs: Add missing documentation of error code 99 XML_ERROR_NOT_STARTED that was introduced with 2.6.4 100 #941 docs: Document need for C++11 compiler for use from C++ 101 #959 tests/benchmark: Fix a (harmless) TOCTTOU 102 #944 Windows: Fix installer target location of file xmlwf.xml 103 for CMake 104 #953 Windows: Address warning -Wunknown-warning-option 105 about -Wno-pedantic-ms-format from LLVM MinGW 106 #971 Address Cppcheck warnings 107 #969 #970 Mass-migrate links from http:// to https:// 108 #947 #958 .. 109 #974 #975 Document changes since the previous release 110 #974 #975 Version info bumped from 11:0:10 (libexpat*.so.1.10.0) 111 to 11:1:10 (libexpat*.so.1.10.1); see https://verbump.de/ 112 for what these numbers do 113 114 Infrastructure: 115 #926 tests: Increase robustness 116 #927 #932 .. 117 #930 #933 tests: Increase test coverage 118 #617 #950 .. 119 #951 #952 .. 120 #954 #955 .. Fuzzing: Add new fuzzer "xml_lpm_fuzzer" based on 121 #961 Google's libprotobuf-mutator ("LPM") 122 #957 Fuzzing|CI: Start producing fuzzing code coverage reports 123 #936 CI: Pass -q -q for LCOV >=2.1 in coverage.sh 124 #942 CI: Small fuzzing related improvements 125 #139 #203 .. 126 #791 #946 CI: Make GitHub Actions build using MSVC on Windows and 127 produce 32bit and 64bit Windows binaries 128 #956 CI: Get off of about-to-be-removed Ubuntu 20.04 129 #960 #964 CI: Start uploading to Coverity Scan for static analysis 130 #972 CI: Stop loading DTD from the internet to address flaky CI 131 #971 CI: Adapt to breaking changes in Cppcheck 132 133 Special thanks to: 134 Alexander Gieringer 135 Berkay Eren Ürün 136 Hanno Böck 137 Jann Horn 138 Mark Brand 139 Sebastian Andrzej Siewior 140 Snild Dolkow 141 Thomas Pröll 142 Tomas Korbar 143 valord577 144 and 145 Google Project Zero 146 Linutronix 147 Red Hat 148 Siemens 149 150Release 2.6.4 Wed November 6 2024 151 Security fixes: 152 #915 CVE-2024-50602 -- Fix crash within function XML_ResumeParser 153 from a NULL pointer dereference by disallowing function 154 XML_StopParser to (stop or) suspend an unstarted parser. 155 A new error code XML_ERROR_NOT_STARTED was introduced to 156 properly communicate this situation. // CWE-476 CWE-754 157 158 Other changes: 159 #903 CMake: Add alias target "expat::expat" 160 #905 docs: Document use via CMake >=3.18 with FetchContent 161 and SOURCE_SUBDIR and its consequences 162 #902 tests: Reduce use of global parser instance 163 #904 tests: Resolve duplicate handler 164 #317 #918 tests: Improve tests on doctype closing (ex CVE-2019-15903) 165 #914 Fix signedness of format strings 166 #915 For use from C++, expat.h started requiring C++11 due to 167 use of C99 features 168 #919 #920 Version info bumped from 10:3:9 (libexpat*.so.1.9.3) 169 to 11:0:10 (libexpat*.so.1.10.0); see https://verbump.de/ 170 for what these numbers do 171 172 Infrastructure: 173 #907 CI: Upgrade Clang from 18 to 19 174 #913 CI: Drop macos-12 and add macos-15 175 #910 CI: Adapt to breaking changes in GitHub Actions 176 #898 Add missing entries to .gitignore 177 178 Special thanks to: 179 Hanno Böck 180 José Eduardo Gutiérrez Conejo 181 José Ricardo Cardona Quesada 182 183Release 2.6.3 Wed September 4 2024 184 Security fixes: 185 #887 #890 CVE-2024-45490 -- Calling function XML_ParseBuffer with 186 len < 0 without noticing and then calling XML_GetBuffer 187 will have XML_ParseBuffer fail to recognize the problem 188 and XML_GetBuffer corrupt memory. 189 With the fix, XML_ParseBuffer now complains with error 190 XML_ERROR_INVALID_ARGUMENT just like sibling XML_Parse 191 has been doing since Expat 2.2.1, and now documented. 192 Impact is denial of service to potentially artitrary code 193 execution. 194 #888 #891 CVE-2024-45491 -- Internal function dtdCopy can have an 195 integer overflow for nDefaultAtts on 32-bit platforms 196 (where UINT_MAX equals SIZE_MAX). 197 Impact is denial of service to potentially artitrary code 198 execution. 199 #889 #892 CVE-2024-45492 -- Internal function nextScaffoldPart can 200 have an integer overflow for m_groupSize on 32-bit 201 platforms (where UINT_MAX equals SIZE_MAX). 202 Impact is denial of service to potentially artitrary code 203 execution. 204 205 Other changes: 206 #851 #879 Autotools: Sync CMake templates with CMake 3.28 207 #853 Autotools: Always provide path to find(1) for portability 208 #861 Autotools: Ensure that the m4 directory always exists. 209 #870 Autotools: Simplify handling of SIZEOF_VOID_P 210 #869 Autotools: Support non-GNU sed 211 #856 Autotools|CMake: Fix main() to main(void) 212 #865 Autotools|CMake: Fix compile tests for HAVE_SYSCALL_GETRANDOM 213 #863 Autotools|CMake: Stop requiring dos2unix 214 #854 #855 CMake: Fix check for symbols size_t and off_t 215 #864 docs|tests: Convert README to Markdown and update 216 #741 Windows: Drop support for Visual Studio <=15.0/2017 217 #886 Drop needless XML_DTD guards around is_param access 218 #885 Fix typo in a code comment 219 #894 #896 Version info bumped from 10:2:9 (libexpat*.so.1.9.2) 220 to 10:3:9 (libexpat*.so.1.9.3); see https://verbump.de/ 221 for what these numbers do 222 223 Infrastructure: 224 #880 Readme: Promote the call for help 225 #868 CI: Fix various issues 226 #849 CI: Allow triggering GitHub Actions workflows manually 227 #851 #872 .. 228 #873 #879 CI: Adapt to breaking changes in GitHub Actions 229 230 Special thanks to: 231 Alexander Bluhm 232 Berkay Eren Ürün 233 Dag-Erling Smørgrav 234 Ferenc Géczi 235 TaiYou 236 237Release 2.6.2 Wed March 13 2024 238 Security fixes: 239 #839 #842 CVE-2024-28757 -- Prevent billion laughs attacks with 240 isolated use of external parsers. Please see the commit 241 message of commit 1d50b80cf31de87750103656f6eb693746854aa8 242 for details. 243 244 Bug fixes: 245 #839 #841 Reject direct parameter entity recursion 246 and avoid the related undefined behavior 247 248 Other changes: 249 #847 Autotools: Fix build for DOCBOOK_TO_MAN containing spaces 250 #837 Add missing #821 and #824 to 2.6.1 change log 251 #838 #843 Version info bumped from 10:1:9 (libexpat*.so.1.9.1) 252 to 10:2:9 (libexpat*.so.1.9.2); see https://verbump.de/ 253 for what these numbers do 254 255 Special thanks to: 256 Philippe Antoine 257 Tomas Korbar 258 and 259 Clang UndefinedBehaviorSanitizer 260 OSS-Fuzz / ClusterFuzz 261 262Release 2.6.1 Thu February 29 2024 263 Bug fixes: 264 #817 Make tests independent of CPU speed, and thus more robust 265 #828 #836 Expose billion laughs API with XML_DTD defined and 266 XML_GE undefined, regression from 2.6.0 267 268 Other changes: 269 #829 Hide test-only code behind new internal macro 270 #833 Autotools: Reject expat_config.h.in defining SIZEOF_VOID_P 271 #821 #824 Autotools: Fix "make clean" for case: 272 ./configure --without-docbook && make clean all 273 #819 Address compiler warnings 274 #832 #834 Version info bumped from 10:0:9 (libexpat*.so.1.9.0) 275 to 10:1:9 (libexpat*.so.1.9.1); see https://verbump.de/ 276 for what these numbers do 277 278 Infrastructure: 279 #818 CI: Adapt to breaking changes in clang-format 280 281 Special thanks to: 282 David Hall 283 Snild Dolkow 284 285Release 2.6.0 Tue February 6 2024 286 Security fixes: 287 #789 #814 CVE-2023-52425 -- Fix quadratic runtime issues with big tokens 288 that can cause denial of service, in partial where 289 dealing with compressed XML input. Applications 290 that parsed a document in one go -- a single call to 291 functions XML_Parse or XML_ParseBuffer -- were not affected. 292 The smaller the chunks/buffers you use for parsing 293 previously, the bigger the problem prior to the fix. 294 Backporters should be careful to no omit parts of 295 pull request #789 and to include earlier pull request #771, 296 in order to not break the fix. 297 #777 CVE-2023-52426 -- Fix billion laughs attacks for users 298 compiling *without* XML_DTD defined (which is not common). 299 Users with XML_DTD defined have been protected since 300 Expat >=2.4.0 (and that was CVE-2013-0340 back then). 301 302 Bug fixes: 303 #753 Fix parse-size-dependent "invalid token" error for 304 external entities that start with a byte order mark 305 #780 Fix NULL pointer dereference in setContext via 306 XML_ExternalEntityParserCreate for compilation with 307 XML_DTD undefined 308 #812 #813 Protect against closing entities out of order 309 310 Other changes: 311 #723 Improve support for arc4random/arc4random_buf 312 #771 #788 Improve buffer growth in XML_GetBuffer and XML_Parse 313 #761 #770 xmlwf: Support --help and --version 314 #759 #770 xmlwf: Support custom buffer size for XML_GetBuffer and read 315 #744 xmlwf: Improve language and URL clickability in help output 316 #673 examples: Add new example "element_declarations.c" 317 #764 Be stricter about macro XML_CONTEXT_BYTES at build time 318 #765 Make inclusion to expat_config.h consistent 319 #726 #727 Autotools: configure.ac: Support --disable-maintainer-mode 320 #678 #705 .. 321 #706 #733 #792 Autotools: Sync CMake templates with CMake 3.26 322 #795 Autotools: Make installation of shipped man page doc/xmlwf.1 323 independent of docbook2man availability 324 #815 Autotools|CMake: Add missing -DXML_STATIC to pkg-config file 325 section "Cflags.private" in order to fix compilation 326 against static libexpat using pkg-config on Windows 327 #724 #751 Autotools|CMake: Require a C99 compiler 328 (a de-facto requirement already since Expat 2.2.2 of 2017) 329 #793 Autotools|CMake: Fix PACKAGE_BUGREPORT variable 330 #750 #786 Autotools|CMake: Make test suite require a C++11 compiler 331 #749 CMake: Require CMake >=3.5.0 332 #672 CMake: Lowercase off_t and size_t to help a bug in Meson 333 #746 CMake: Sort xmlwf sources alphabetically 334 #785 CMake|Windows: Fix generation of DLL file version info 335 #790 CMake: Build tests/benchmark/benchmark.c as well for 336 a build with -DEXPAT_BUILD_TESTS=ON 337 #745 #757 docs: Document the importance of isFinal + adjust tests 338 accordingly 339 #736 docs: Improve use of "NULL" and "null" 340 #713 docs: Be specific about version of XML (XML 1.0r4) 341 and version of C (C99); (XML 1.0r5 will need a sponsor.) 342 #762 docs: reference.html: Promote function XML_ParseBuffer more 343 #779 docs: reference.html: Add HTML anchors to XML_* macros 344 #760 docs: reference.html: Upgrade to OK.css 1.2.0 345 #763 #739 docs: Fix typos 346 #696 docs|CI: Use HTTPS URLs instead of HTTP at various places 347 #669 #670 .. 348 #692 #703 .. 349 #733 #772 Address compiler warnings 350 #798 #800 Address clang-tidy warnings 351 #775 #776 Version info bumped from 9:10:8 (libexpat*.so.1.8.10) 352 to 10:0:9 (libexpat*.so.1.9.0); see https://verbump.de/ 353 for what these numbers do 354 355 Infrastructure: 356 #700 #701 docs: Document security policy in file SECURITY.md 357 #766 docs: Improve parse buffer variables in-code documentation 358 #674 #738 .. 359 #740 #747 .. 360 #748 #781 #782 Refactor coverage and conformance tests 361 #714 #716 Refactor debug level variables to unsigned long 362 #671 Improve handling of empty environment variable value 363 in function getDebugLevel (without visible user effect) 364 #755 #774 .. 365 #758 #783 .. 366 #784 #787 tests: Improve test coverage with regard to parse chunk size 367 #660 #797 #801 Fuzzing: Improve fuzzing coverage 368 #367 #799 Fuzzing|CI: Start running OSS-Fuzz fuzzing regression tests 369 #698 #721 CI: Resolve some Travis CI leftovers 370 #669 CI: Be robust towards absence of Git tags 371 #693 #694 CI: Set permissions to "contents: read" for security 372 #709 CI: Pin all GitHub Actions to specific commits for security 373 #739 CI: Reject spelling errors using codespell 374 #798 CI: Enforce clang-tidy clean code 375 #773 #808 .. 376 #809 #810 CI: Upgrade Clang from 15 to 18 377 #796 CI: Start using Clang's Control Flow Integrity sanitizer 378 #675 #720 #722 CI: Adapt to breaking changes in GitHub Actions Ubuntu images 379 #689 CI: Adapt to breaking changes in Clang/LLVM Debian packaging 380 #763 CI: Adapt to breaking changes in codespell 381 #803 CI: Adapt to breaking changes in Cppcheck 382 383 Special thanks to: 384 Ivan Galkin 385 Joyce Brum 386 Philippe Antoine 387 Rhodri James 388 Snild Dolkow 389 spookyahell 390 Steven Garske 391 and 392 Clang AddressSanitizer 393 Clang UndefinedBehaviorSanitizer 394 codespell 395 GCC Farm Project 396 OSS-Fuzz 397 Sony Mobile 398 399Release 2.5.0 Tue October 25 2022 400 Security fixes: 401 #616 #649 #650 CVE-2022-43680 -- Fix heap use-after-free after overeager 402 destruction of a shared DTD in function 403 XML_ExternalEntityParserCreate in out-of-memory situations. 404 Expected impact is denial of service or potentially 405 arbitrary code execution. 406 407 Bug fixes: 408 #612 #645 Fix corruption from undefined entities 409 #613 #654 Fix case when parsing was suspended while processing nested 410 entities 411 #616 #652 #653 Stop leaking opening tag bindings after a closing tag 412 mismatch error where a parser is reset through 413 XML_ParserReset and then reused to parse 414 #656 CMake: Fix generation of pkg-config file 415 #658 MinGW|CMake: Fix static library name 416 417 Other changes: 418 #663 Protect header expat_config.h from multiple inclusion 419 #666 examples: Make use of XML_GetBuffer and be more 420 consistent across examples 421 #648 Address compiler warnings 422 #667 #668 Version info bumped from 9:9:8 to 9:10:8; 423 see https://verbump.de/ for what these numbers do 424 425 Special thanks to: 426 Jann Horn 427 Mark Brand 428 Osyotr 429 Rhodri James 430 and 431 Google Project Zero 432 433Release 2.4.9 Tue September 20 2022 434 Security fixes: 435 #629 #640 CVE-2022-40674 -- Heap use-after-free vulnerability in 436 function doContent. Expected impact is denial of service 437 or potentially arbitrary code execution. 438 439 Bug fixes: 440 #634 MinGW: Fix mis-compilation for -D__USE_MINGW_ANSI_STDIO=0 441 #614 docs: Fix documentation on effect of switch XML_DTD on 442 symbol visibility in doc/reference.html 443 444 Other changes: 445 #638 MinGW: Make fix-xmltest-log.sh drop more Wine bug output 446 #596 #625 Autotools: Sync CMake templates with CMake 3.22 447 #608 CMake: Migrate from use of CMAKE_*_POSTFIX to 448 dedicated variables EXPAT_*_POSTFIX to stop affecting 449 other projects 450 #597 #599 Windows|CMake: Add missing -DXML_STATIC to test runners 451 and fuzzers 452 #512 #621 Windows|CMake: Render .def file from a template to fix 453 linking with -DEXPAT_DTD=OFF and/or -DEXPAT_ATTR_INFO=ON 454 #611 #621 MinGW|CMake: Apply MSVC .def file when linking 455 #622 #624 MinGW|CMake: Sync library name with GNU Autotools, 456 i.e. produce libexpat-1.dll rather than libexpat.dll 457 by default. Filename libexpat.dll.a is unaffected. 458 #632 MinGW|CMake: Set missing variable CMAKE_RC_COMPILER in 459 toolchain file "cmake/mingw-toolchain.cmake" to avoid 460 error "windres: Command not found" on e.g. Ubuntu 20.04 461 #597 #627 CMake: Unify inconsistent use of set() and option() in 462 context of public build time options to take need for 463 set(.. FORCE) in projects using Expat by means of 464 add_subdirectory(..) off Expat's users' shoulders 465 #626 #641 Stop exporting API symbols when building a static library 466 #644 Resolve use of deprecated "fgrep" by "grep -F" 467 #620 CMake: Make documentation on variables a bit more consistent 468 #636 CMake: Drop leading whitespace from a #cmakedefine line in 469 file expat_config.h.cmake 470 #594 xmlwf: Fix harmless variable mix-up in function nsattcmp 471 #592 #593 #610 Address Cppcheck warnings 472 #643 Address Clang 15 compiler warnings 473 #642 #644 Version info bumped from 9:8:8 to 9:9:8; 474 see https://verbump.de/ for what these numbers do 475 476 Infrastructure: 477 #597 #598 CI: Windows: Start covering MSVC 2022 478 #619 CI: macOS: Migrate off deprecated macOS 10.15 479 #632 CI: Linux: Make migration off deprecated Ubuntu 18.04 work 480 #643 CI: Upgrade Clang from 14 to 15 481 #637 apply-clang-format.sh: Add support for BSD find 482 #633 coverage.sh: Exclude MinGW headers 483 #635 coverage.sh: Fix name collision for -funsigned-char 484 485 Special thanks to: 486 David Faure 487 Felix Wilhelm 488 Frank Bergmann 489 Rhodri James 490 Rosen Penev 491 Thijs Schreijer 492 Vincent Torri 493 and 494 Google Project Zero 495 496Release 2.4.8 Mon March 28 2022 497 Other changes: 498 #587 pkg-config: Move "-lm" to section "Libs.private" 499 #587 CMake|MSVC: Fix pkg-config section "Libs" 500 #55 #582 CMake|macOS: Start using linker arguments 501 "-compatibility_version <version>" and 502 "-current_version <version>" in a way compatible with 503 GNU Libtool 504 #590 #591 Version info bumped from 9:7:8 to 9:8:8; 505 see https://verbump.de/ for what these numbers do 506 507 Infrastructure: 508 #589 CI: Upgrade Clang from 13 to 14 509 510 Special thanks to: 511 evpobr 512 Kai Pastor 513 Sam James 514 515Release 2.4.7 Fri March 4 2022 516 Bug fixes: 517 #572 #577 Relax fix to CVE-2022-25236 (introduced with release 2.4.5) 518 with regard to all valid URI characters (RFC 3986), 519 i.e. the following set (excluding whitespace): 520 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 521 0123456789 % -._~ :/?#[]@ !$&'()*+,;= 522 523 Other changes: 524 #555 #570 #581 CMake|Windows: Store Expat version in the DLL 525 #577 Document consequences of namespace separator choices not just 526 in doc/reference.html but also in header <expat.h> 527 #577 Document Expat's lack of validation of namespace URIs against 528 RFC 3986, and that the XML 1.0r4 specification doesn't 529 require Expat to validate namespace URIs, and that Expat 530 may do more in that regard in future releases. 531 If you find need for strict RFC 3986 URI validation on 532 application level today, https://uriparser.github.io/ may 533 be of interest. 534 #579 Fix documentation of XML_EndDoctypeDeclHandler in <expat.h> 535 #575 Document that a call to XML_FreeContentModel can be done at 536 a later time from outside the element declaration handler 537 #574 Make hardcoded namespace URIs easier to find in code 538 #573 Update documentation on use of XML_POOR_ENTOPY on Solaris 539 #569 #571 tests: Resolve use of macros NAN and INFINITY for GNU G++ 540 4.8.2 on Solaris. 541 #578 #580 Version info bumped from 9:6:8 to 9:7:8; 542 see https://verbump.de/ for what these numbers do 543 544 Special thanks to: 545 Jeffrey Walton 546 Johnny Jazeix 547 Thijs Schreijer 548 549Release 2.4.6 Sun February 20 2022 550 Bug fixes: 551 #566 Fix a regression introduced by the fix for CVE-2022-25313 552 in release 2.4.5 that affects applications that (1) 553 call function XML_SetElementDeclHandler and (2) are 554 parsing XML that contains nested element declarations 555 (e.g. "<!ELEMENT junk ((bar|foo|xyz+), zebra*)>"). 556 557 Other changes: 558 #567 #568 Version info bumped from 9:5:8 to 9:6:8; 559 see https://verbump.de/ for what these numbers do 560 561 Special thanks to: 562 Matt Sergeant 563 Samanta Navarro 564 Sergei Trofimovich 565 and 566 NixOS 567 Perl XML::Parser 568 569Release 2.4.5 Fri February 18 2022 570 Security fixes: 571 #562 CVE-2022-25235 -- Passing malformed 2- and 3-byte UTF-8 572 sequences (e.g. from start tag names) to the XML 573 processing application on top of Expat can cause 574 arbitrary damage (e.g. code execution) depending 575 on how invalid UTF-8 is handled inside the XML 576 processor; validation was not their job but Expat's. 577 Exploits with code execution are known to exist. 578 #561 CVE-2022-25236 -- Passing (one or more) namespace separator 579 characters in "xmlns[:prefix]" attribute values 580 made Expat send malformed tag names to the XML 581 processor on top of Expat which can cause 582 arbitrary damage (e.g. code execution) depending 583 on such unexpectable cases are handled inside the XML 584 processor; validation was not their job but Expat's. 585 Exploits with code execution are known to exist. 586 #558 CVE-2022-25313 -- Fix stack exhaustion in doctype parsing 587 that could be triggered by e.g. a 2 megabytes 588 file with a large number of opening braces. 589 Expected impact is denial of service or potentially 590 arbitrary code execution. 591 #560 CVE-2022-25314 -- Fix integer overflow in function copyString; 592 only affects the encoding name parameter at parser creation 593 time which is often hardcoded (rather than user input), 594 takes a value in the gigabytes to trigger, and a 64-bit 595 machine. Expected impact is denial of service. 596 #559 CVE-2022-25315 -- Fix integer overflow in function storeRawNames; 597 needs input in the gigabytes and a 64-bit machine. 598 Expected impact is denial of service or potentially 599 arbitrary code execution. 600 601 Other changes: 602 #557 #564 Version info bumped from 9:4:8 to 9:5:8; 603 see https://verbump.de/ for what these numbers do 604 605 Special thanks to: 606 Ivan Fratric 607 Samanta Navarro 608 and 609 Google Project Zero 610 JetBrains 611 612Release 2.4.4 Sun January 30 2022 613 Security fixes: 614 #550 CVE-2022-23852 -- Fix signed integer overflow 615 (undefined behavior) in function XML_GetBuffer 616 (that is also called by function XML_Parse internally) 617 for when XML_CONTEXT_BYTES is defined to >0 (which is both 618 common and default). 619 Impact is denial of service or more. 620 #551 CVE-2022-23990 -- Fix unsigned integer overflow in function 621 doProlog triggered by large content in element type 622 declarations when there is an element declaration handler 623 present (from a prior call to XML_SetElementDeclHandler). 624 Impact is denial of service or more. 625 626 Bug fixes: 627 #544 #545 xmlwf: Fix a memory leak on output file opening error 628 629 Other changes: 630 #546 Autotools: Fix broken CMake support under Cygwin 631 #554 Windows: Add missing files to the installer to fix 632 compilation with CMake from installed sources 633 #552 #554 Version info bumped from 9:3:8 to 9:4:8; 634 see https://verbump.de/ for what these numbers do 635 636 Special thanks to: 637 Carlo Bramini 638 hwt0415 639 Roland Illig 640 Samanta Navarro 641 and 642 Clang LeakSan and the Clang team 643 644Release 2.4.3 Sun January 16 2022 645 Security fixes: 646 #531 #534 CVE-2021-45960 -- Fix issues with left shifts by >=29 places 647 resulting in 648 a) realloc acting as free 649 b) realloc allocating too few bytes 650 c) undefined behavior 651 depending on architecture and precise value 652 for XML documents with >=2^27+1 prefixed attributes 653 on a single XML tag a la 654 "<r xmlns:a='[..]' a:a123='[..]' [..] />" 655 where XML_ParserCreateNS is used to create the parser 656 (which needs argument "-n" when running xmlwf). 657 Impact is denial of service, or more. 658 #532 #538 CVE-2021-46143 (ZDI-CAN-16157) -- Fix integer overflow 659 on variable m_groupSize in function doProlog leading 660 to realloc acting as free. 661 Impact is denial of service or more. 662 #539 CVE-2022-22822 to CVE-2022-22827 -- Prevent integer overflows 663 near memory allocation at multiple places. Mitre assigned 664 a dedicated CVE for each involved internal C function: 665 - CVE-2022-22822 for function addBinding 666 - CVE-2022-22823 for function build_model 667 - CVE-2022-22824 for function defineAttribute 668 - CVE-2022-22825 for function lookup 669 - CVE-2022-22826 for function nextScaffoldPart 670 - CVE-2022-22827 for function storeAtts 671 Impact is denial of service or more. 672 673 Other changes: 674 #535 CMake: Make call to file(GENERATE [..]) work for CMake <3.19 675 #541 Autotools|CMake: MinGW: Make run.sh(.in) work for Cygwin 676 and MSYS2 by not going through Wine on these platforms 677 #527 #528 Address compiler warnings 678 #533 #543 Version info bumped from 9:2:8 to 9:3:8; 679 see https://verbump.de/ for what these numbers do 680 681 Infrastructure: 682 #536 CI: Check for realistic minimum CMake version 683 #529 #539 CI: Cover compilation with -m32 684 #529 CI: Store coverage reports as artifacts for download 685 #528 CI: Upgrade Clang from 11 to 13 686 687 Special thanks to: 688 An anonymous whitehat 689 Christopher Degawa 690 J. Peter Mugaas 691 Tyson Smith 692 and 693 GCC Farm Project 694 Trend Micro Zero Day Initiative 695 696Release 2.4.2 Sun December 19 2021 697 Other changes: 698 #509 #510 Link againgst libm for function "isnan" 699 #513 #514 Include expat_config.h as early as possible 700 #498 Autotools: Include files with release archives: 701 - buildconf.sh 702 - fuzz/*.c 703 #507 #519 Autotools: Sync CMake templates with CMake 3.20 704 #495 #524 CMake: MinGW: Fix pkg-config section "Libs" for 705 - non-release build types (e.g. -DCMAKE_BUILD_TYPE=Debug) 706 - multi-config CMake generators (e.g. Ninja Multi-Config) 707 #502 #503 docs: Document that function XML_GetBuffer may return NULL 708 when asking for a buffer of 0 (zero) bytes size 709 #522 #523 docs: Fix return value docs for both 710 XML_SetBillionLaughsAttackProtection* functions 711 #525 #526 Version info bumped from 9:1:8 to 9:2:8; 712 see https://verbump.de/ for what these numbers do 713 714 Special thanks to: 715 Donghee Na 716 Joergen Ibsen 717 Kai Pastor 718 719Release 2.4.1 Sun May 23 2021 720 Bug fixes: 721 #488 #490 Autotools: Fix installed header expat_config.h for multilib 722 systems; regression introduced in 2.4.0 by pull request #486 723 724 Other changes: 725 #491 #492 Version info bumped from 9:0:8 to 9:1:8; 726 see https://verbump.de/ for what these numbers do 727 728 Special thanks to: 729 Gentoo's QA check "multilib_check_headers" 730 731Release 2.4.0 Sun May 23 2021 732 Security fixes: 733 #34 #466 #484 CVE-2013-0340/CWE-776 -- Protect against billion laughs attacks 734 (denial-of-service; flavors targeting CPU time or RAM or both, 735 leveraging general entities or parameter entities or both) 736 by tracking and limiting the input amplification factor 737 (<amplification> := (<direct> + <indirect>) / <direct>). 738 By conservative default, amplification up to a factor of 100.0 739 is tolerated and rejection only starts after 8 MiB of output bytes 740 (=<direct> + <indirect>) have been processed. 741 The fix adds the following to the API: 742 - A new error code XML_ERROR_AMPLIFICATION_LIMIT_BREACH to 743 signals this specific condition. 744 - Two new API functions .. 745 - XML_SetBillionLaughsAttackProtectionMaximumAmplification and 746 - XML_SetBillionLaughsAttackProtectionActivationThreshold 747 .. to further tighten billion laughs protection parameters 748 when desired. Please see file "doc/reference.html" for details. 749 If you ever need to increase the defaults for non-attack XML 750 payload, please file a bug report with libexpat. 751 - Two new XML_FEATURE_* constants .. 752 - that can be queried using the XML_GetFeatureList function, and 753 - that are shown in "xmlwf -v" output. 754 - Two new environment variable switches .. 755 - EXPAT_ACCOUNTING_DEBUG=(0|1|2|3) and 756 - EXPAT_ENTITY_DEBUG=(0|1) 757 .. for runtime debugging of accounting and entity processing. 758 Specific behavior of these values may change in the future. 759 - Two new command line arguments "-a FACTOR" and "-b BYTES" 760 for xmlwf to further tighten billion laughs protection 761 parameters when desired. 762 If you ever need to increase the defaults for non-attack XML 763 payload, please file a bug report with libexpat. 764 765 Bug fixes: 766 #332 #470 For (non-default) compilation with -DEXPAT_MIN_SIZE=ON (CMake) 767 or CPPFLAGS=-DXML_MIN_SIZE (GNU Autotools): Fix segfault 768 for UTF-16 payloads containing CDATA sections. 769 #485 #486 Autotools: Fix generated CMake files for non-64bit and 770 non-Linux platforms (e.g. macOS and MinGW in particular) 771 that were introduced with release 2.3.0 772 773 Other changes: 774 #468 #469 xmlwf: Improve help output and the xmlwf man page 775 #463 xmlwf: Improve maintainability through some refactoring 776 #477 xmlwf: Fix man page DocBook validity 777 #456 Autotools: Sync CMake templates with CMake 3.18 778 #458 #459 CMake: Support absolute paths for both CMAKE_INSTALL_LIBDIR 779 and CMAKE_INSTALL_INCLUDEDIR 780 #471 #481 CMake: Add support for standard variable BUILD_SHARED_LIBS 781 #457 Unexpose symbol _INTERNAL_trim_to_complete_utf8_characters 782 #467 Resolve macro HAVE_EXPAT_CONFIG_H 783 #472 Delete unused legacy helper file "conftools/PrintPath" 784 #473 #483 Improve attribution 785 #464 #465 #477 doc/reference.html: Fix XHTML validity 786 #475 #478 doc/reference.html: Replace the 90s look by OK.css 787 #479 Version info bumped from 8:0:7 to 9:0:8 788 due to addition of new symbols and error codes; 789 see https://verbump.de/ for what these numbers do 790 791 Infrastructure: 792 #456 CI: Enable periodic runs 793 #457 CI: Start covering the list of exported symbols 794 #474 CI: Isolate coverage task 795 #476 #482 CI: Adapt to breaking changes in image "ubuntu-18.04" 796 #477 CI: Cover well-formedness and DocBook/XHTML validity 797 of doc/reference.html and doc/xmlwf.xml 798 799 Special thanks to: 800 Dimitry Andric 801 Eero Helenius 802 Nick Wellnhofer 803 Rhodri James 804 Tomas Korbar 805 Yury Gribov 806 and 807 Clang LeakSan 808 JetBrains 809 OSS-Fuzz 810 811Release 2.3.0 Thu March 25 2021 812 Bug fixes: 813 #438 When calling XML_ParseBuffer without a prior successful call to 814 XML_GetBuffer as a user, no longer trigger undefined behavior 815 (by adding an integer to a NULL pointer) but rather return 816 XML_STATUS_ERROR and set the error code to (new) code 817 XML_ERROR_NO_BUFFER. Found by UBSan (UndefinedBehaviorSanitizer) 818 of Clang 11 (but not Clang 9). 819 #444 xmlwf: Exit status 2 was used for both: 820 - malformed input files (documented) and 821 - invalid command-line arguments (undocumented). 822 The case of invalid command-line arguments now 823 has its own exit status 4, resolving the ambiguity. 824 825 Other changes: 826 #439 xmlwf: Add argument -k to allow continuing after 827 non-fatal errors 828 #439 xmlwf: Add section about exit status to the -h help output 829 #422 #426 #447 Windows: Drop support for Visual Studio <=14.0/2015 830 #434 Windows: CMake: Detect unsupported Visual Studio at 831 configure time (rather than at compile time) 832 #382 #428 testrunner: Make verbose mode (argument "-v") report 833 about passed tests, and make default mode report about 834 failures, as well. 835 #442 CMake: Call "enable_language(CXX)" prior to tinkering 836 with CMAKE_CXX_* variables 837 #448 Document use of libexpat from a CMake-based project 838 #451 Autotools: Install CMake files as generated by CMake 3.19.6 839 so that users with "find_package(expat [..] CONFIG [..])" 840 are served on distributions that are *not* using the CMake 841 build system inside for libexpat packaging 842 #436 #437 Autotools: Drop obsolescent macro AC_HEADER_STDC 843 #450 #452 Autotools: Resolve use of obsolete macro AC_CONFIG_HEADER 844 #441 Address compiler warnings 845 #443 Version info bumped from 7:12:6 to 8:0:7 846 due to addition of error code XML_ERROR_NO_BUFFER 847 (see https://verbump.de/ for what these numbers do) 848 849 Infrastructure: 850 #435 #446 Replace Travis CI by GitHub Actions 851 852 Special thanks to: 853 Alexander Richardson 854 Oleksandr Popovych 855 Thomas Beutlich 856 Tim Bray 857 and 858 Clang LeakSan, Clang 11 UBSan and the Clang team 859 860Release 2.2.10 Sat October 3 2020 861 Bug fixes: 862 #390 #395 #398 Fix undefined behavior during parsing caused by 863 pointer arithmetic with NULL pointers 864 #404 #405 Fix reading uninitialized variable during parsing 865 #406 xmlwf: Add missing check for malloc NULL return 866 867 Other changes: 868 #396 Windows: Drop support for Visual Studio <=8.0/2005 869 #409 Windows: Add missing file "Changes" to the installer 870 to fix compilation with CMake from installed sources 871 #403 xmlwf: Document exit codes in xmlwf manpage and 872 exit with code 3 (rather than code 1) for output errors 873 when used with "-d DIRECTORY" 874 #356 #359 MinGW: Provide declaration of rand_s for mingwrt <5.3.0 875 #383 #392 Autotools: Use -Werror while configure tests the compiler 876 for supported compile flags to avoid false positives 877 #383 #393 #394 Autotools: Improve handling of user (C|CPP|CXX|LD)FLAGS, 878 e.g. ensure that they have the last word over flags added 879 while running ./configure 880 #360 CMake: Create libexpatw.{dll,so} and expatw.pc (with emphasis 881 on suffix "w") with -DEXPAT_CHAR_TYPE=(ushort|wchar_t) 882 #360 CMake: Detect and deny unsupported build combinations 883 involving -DEXPAT_CHAR_TYPE=(ushort|wchar_t) 884 #360 CMake: Install pre-compiled shipped xmlwf.1 manpage in case 885 of -DEXPAT_BUILD_DOCS=OFF 886 #375 #380 #419 CMake: Fix use of Expat by means of add_subdirectory 887 #407 #408 CMake: Keep expat target name constant at "expat" 888 (i.e. refrain from using the target name to control 889 build artifact filenames) 890 #385 CMake: Fix compilation with -DEXPAT_SHARED_LIBS=OFF for 891 Windows 892 CMake: Expose man page compilation as target "xmlwf-manpage" 893 #413 #414 CMake: Introduce option EXPAT_BUILD_PKGCONFIG 894 to control generation of pkg-config file "expat.pc" 895 #424 CMake: Add minimalistic support for building binary packages 896 with CMake target "package"; based on CPack 897 #366 CMake: Add option -DEXPAT_OSSFUZZ_BUILD=(ON|OFF) with 898 default OFF to build fuzzer code against OSS-Fuzz and 899 related environment variable LIB_FUZZING_ENGINE 900 #354 Fix testsuite for -DEXPAT_DTD=OFF and -DEXPAT_NS=OFF, each 901 #354 #355 .. 902 #356 #412 Address compiler warnings 903 #368 #369 Address pngcheck warnings with doc/*.png images 904 #425 Version info bumped from 7:11:6 to 7:12:6 905 906 Special thanks to: 907 asavah 908 Ben Wagner 909 Bhargava Shastry 910 Frank Landgraf 911 Jeffrey Walton 912 Joe Orton 913 Kleber Tarcísio 914 Ma Lin 915 Maciej Sroczyński 916 Mohammed Khajapasha 917 Vadim Zeitlin 918 and 919 Cppcheck 2.0 and the Cppcheck team 920 921Release 2.2.9 Wed September 25 2019 922 Other changes: 923 examples: Drop executable bits from elements.c 924 #349 Windows: Change the name of the Windows DLLs from expat*.dll 925 to libexpat*.dll once more (regression from 2.2.8, first 926 fixed in 1.95.3, issue #61 on SourceForge today, 927 was issue #432456 back then); needs a fix due 928 case-insensitive file systems on Windows and the fact that 929 Perl's XML::Parser::Expat compiles into Expat.dll. 930 #347 Windows: Only define _CRT_RAND_S if not defined 931 Version info bumped from 7:10:6 to 7:11:6 932 933 Special thanks to: 934 Ben Wagner 935 936Release 2.2.8 Fri September 13 2019 937 Security fixes: 938 #317 #318 CVE-2019-15903 -- Fix heap overflow triggered by 939 XML_GetCurrentLineNumber (or XML_GetCurrentColumnNumber), 940 and deny internal entities closing the doctype; 941 fixed in commit c20b758c332d9a13afbbb276d30db1d183a85d43 942 943 Bug fixes: 944 #240 Fix cases where XML_StopParser did not have any effect 945 when called from inside of an end element handler 946 #341 xmlwf: Fix exit code for operation without "-d DIRECTORY"; 947 previously, only "-d DIRECTORY" would give you a proper 948 exit code: 949 # xmlwf -d . <<<'<not well-formed>' 2>/dev/null ; echo $? 950 2 951 # xmlwf <<<'<not well-formed>' 2>/dev/null ; echo $? 952 0 953 Now both cases return exit code 2. 954 955 Other changes: 956 #299 #302 Windows: Replace LoadLibrary hack to access 957 unofficial API function SystemFunction036 (RtlGenRandom) 958 by using official API function rand_s (needs WinXP+) 959 #325 Windows: Drop support for Visual Studio <=7.1/2003 960 and document supported compilers in README.md 961 #286 Windows: Remove COM code from xmlwf; in case it turns 962 out needed later, there will be a dedicated repository 963 below https://github.com/libexpat/ for that code 964 #322 Windows: Remove explicit MSVC solution and project files. 965 You can generate Visual Studio solution files through 966 CMake, e.g.: cmake -G"Visual Studio 15 2017" . 967 #338 xmlwf: Make "xmlwf -h" help output more friendly 968 #339 examples: Improve elements.c 969 #244 #264 Autotools: Add argument --enable-xml-attr-info 970 #239 #301 Autotools: Add arguments 971 --with-getrandom 972 --without-getrandom 973 --with-sys-getrandom 974 --without-sys-getrandom 975 #312 #343 Autotools: Fix linking issues with "./configure LD=clang" 976 Autotools: Fix "make run-xmltest" for out-of-source builds 977 #329 #336 CMake: Pull all options from Expat <=2.2.7 into namespace 978 prefix EXPAT_ with the exception of DOCBOOK_TO_MAN: 979 - BUILD_doc -> EXPAT_BUILD_DOCS (plural) 980 - BUILD_examples -> EXPAT_BUILD_EXAMPLES 981 - BUILD_shared -> EXPAT_SHARED_LIBS 982 - BUILD_tests -> EXPAT_BUILD_TESTS 983 - BUILD_tools -> EXPAT_BUILD_TOOLS 984 - DOCBOOK_TO_MAN -> DOCBOOK_TO_MAN (unchanged) 985 - INSTALL -> EXPAT_ENABLE_INSTALL 986 - MSVC_USE_STATIC_CRT -> EXPAT_MSVC_STATIC_CRT 987 - USE_libbsd -> EXPAT_WITH_LIBBSD 988 - WARNINGS_AS_ERRORS -> EXPAT_WARNINGS_AS_ERRORS 989 - XML_CONTEXT_BYTES -> EXPAT_CONTEXT_BYTES 990 - XML_DEV_URANDOM -> EXPAT_DEV_URANDOM 991 - XML_DTD -> EXPAT_DTD 992 - XML_NS -> EXPAT_NS 993 - XML_UNICODE -> EXPAT_CHAR_TYPE=ushort (!) 994 - XML_UNICODE_WCHAR_T -> EXPAT_CHAR_TYPE=wchar_t (!) 995 #244 #264 CMake: Add argument -DEXPAT_ATTR_INFO=(ON|OFF), 996 default OFF 997 #326 CMake: Add argument -DEXPAT_LARGE_SIZE=(ON|OFF), 998 default OFF 999 #328 CMake: Add argument -DEXPAT_MIN_SIZE=(ON|OFF), 1000 default OFF 1001 #239 #277 CMake: Add arguments 1002 -DEXPAT_WITH_GETRANDOM=(ON|OFF|AUTO), default AUTO 1003 -DEXPAT_WITH_SYS_GETRANDOM=(ON|OFF|AUTO), default AUTO 1004 #326 CMake: Install expat_config.h to include directory 1005 #326 CMake: Generate and install configuration files for 1006 future find_package(expat [..] CONFIG [..]) 1007 CMake: Now produces a summary of applied configuration 1008 CMake: Require C++ compiler only when tests are enabled 1009 #330 CMake: Fix compilation for 16bit character types, 1010 i.e. ex -DXML_UNICODE=ON (and ex -DXML_UNICODE_WCHAR_T=ON) 1011 #265 CMake: Fix linking with MinGW 1012 #330 CMake: Add full support for MinGW; to enable, use 1013 -DCMAKE_TOOLCHAIN_FILE=[expat]/cmake/mingw-toolchain.cmake 1014 #330 CMake: Port "make run-xmltest" from GNU Autotools to CMake 1015 #316 CMake: Windows: Make binary postfix match MSVC 1016 Old: expat[d].lib 1017 New: expat[w][d][MD|MT].lib 1018 CMake: Migrate files from Windows to Unix line endings 1019 #308 CMake: Integrate OSS-Fuzz fuzzers, option 1020 -DEXPAT_BUILD_FUZZERS=(ON|OFF), default OFF 1021 #14 Drop an OpenVMS support leftover 1022 #235 #268 .. 1023 #270 #310 .. 1024 #313 #331 #333 Address compiler warnings 1025 #282 #283 .. 1026 #284 #285 Address cppcheck warnings 1027 #294 #295 Address Clang Static Analyzer warnings 1028 #24 #293 Mass-apply clang-format 9 (and ensure conformance during CI) 1029 Version info bumped from 7:9:6 to 7:10:6 1030 1031 Special thanks to: 1032 David Loffredo 1033 Joonun Jang 1034 Kishore Kunche 1035 Marco Maggi 1036 Mitch Phillips 1037 Mohammed Khajapasha 1038 Rolf Ade 1039 xantares 1040 Zhongyuan Zhou 1041 1042Release 2.2.7 Wed June 19 2019 1043 Security fixes: 1044 #186 #262 CVE-2018-20843 -- Fix extraction of namespace prefixes from 1045 XML names; XML names with multiple colons could end up in 1046 the wrong namespace, and take a high amount of RAM and CPU 1047 resources while processing, opening the door to 1048 use for denial-of-service attacks 1049 1050 Other changes: 1051 #195 #197 Autotools/CMake: Utilize -fvisibility=hidden to stop 1052 exporting non-API symbols 1053 #227 Autotools: Add --without-examples and --without-tests 1054 #228 Autotools: Modernize configure.ac 1055 #245 #246 Autotools: Fix check for -fvisibility=hidden for Clang 1056 #247 #248 Autotools: Fix compilation for lack of docbook2x-man 1057 #236 #258 Autotools: Produce .tar.{gz,lz,xz} release archives 1058 #212 CMake: Make libdir of pkgconfig expat.pc support multilib 1059 #158 #263 CMake: Build man page in PROJECT_BINARY_DIR not _SOURCE_DIR 1060 #219 Remove fallback to bcopy, assume that memmove(3) exists 1061 #257 Use portable "/usr/bin/env bash" shebang (e.g. for OpenBSD) 1062 #243 Windows: Fix syntax of .def module definition files 1063 Version info bumped from 7:8:6 to 7:9:6 1064 1065 Special thanks to: 1066 Benjamin Peterson 1067 Caolán McNamara 1068 Hanno Böck 1069 KangLin 1070 Kishore Kunche 1071 Marco Maggi 1072 Rhodri James 1073 Sebastian Dröge 1074 userwithuid 1075 Yury Gribov 1076 1077Release 2.2.6 Sun August 12 2018 1078 Bug fixes: 1079 #170 #206 Avoid doing arithmetic with NULL pointers in XML_GetBuffer 1080 #204 #205 Fix 2.2.5 regression with suspend-resume while parsing 1081 a document like '<root/>' 1082 1083 Other changes: 1084 #165 #168 Autotools: Fix docbook-related configure syntax error 1085 #166 Autotools: Avoid grep option `-q` for Solaris 1086 #167 Autotools: Support 1087 ./configure DOCBOOK_TO_MAN="xmlto man --skip-validation" 1088 #159 #167 Autotools: Support DOCBOOK_TO_MAN command which produces 1089 xmlwf.1 rather than XMLWF.1; also covers case insensitive 1090 file systems 1091 #181 Autotools: Drop -rpath option passed to libtool 1092 #188 Autotools: Detect and deny SGML docbook2man as ours is XML 1093 #188 Autotools/CMake: Support command db2x_docbook2man as well 1094 #174 CMake: Introduce option WARNINGS_AS_ERRORS, defaults to OFF 1095 #184 #185 CMake: Introduce option MSVC_USE_STATIC_CRT, defaults to OFF 1096 #207 #208 CMake: Introduce option XML_UNICODE and XML_UNICODE_WCHAR_T, 1097 both defaulting to OFF 1098 #175 CMake: Prefer check_symbol_exists over check_function_exists 1099 #176 CMake: Create the same pkg-config file as with GNU Autotools 1100 #178 #179 CMake: Use GNUInstallDirs module to set proper defaults for 1101 install directories 1102 #208 CMake: Utilize expat_config.h.cmake for XML_DEV_URANDOM 1103 #180 Windows: Fix compilation of test suite for Visual Studio 2008 1104 #131 #173 #202 Address compiler warnings 1105 #187 #190 #200 Fix miscellaneous typos 1106 Version info bumped from 7:7:6 to 7:8:6 1107 1108 Special thanks to: 1109 Anton Maklakov 1110 Benjamin Peterson 1111 Brad King 1112 Franek Korta 1113 Frank Rast 1114 Joe Orton 1115 luzpaz 1116 Pedro Vicente 1117 Rainer Jung 1118 Rhodri James 1119 Rolf Ade 1120 Rolf Eike Beer 1121 Thomas Beutlich 1122 Tomasz Kłoczko 1123 1124Release 2.2.5 Tue October 31 2017 1125 Bug fixes: 1126 #8 If the parser runs out of memory, make sure its internal 1127 state reflects the memory it actually has, not the memory 1128 it wanted to have. 1129 #11 The default handler wasn't being called when it should for 1130 a SYSTEM or PUBLIC doctype if an entity declaration handler 1131 was registered. 1132 #137 #138 Fix a case of mistakenly reported parsing success where 1133 XML_StopParser was called from an element handler 1134 #162 Function XML_ErrorString was returning NULL rather than 1135 a message for code XML_ERROR_INVALID_ARGUMENT 1136 introduced with release 2.2.1 1137 1138 Other changes: 1139 #106 xmlwf: Add argument -N adding notation declarations 1140 #75 #106 Test suite: Resolve expected failure cases where xmlwf 1141 output was incomplete 1142 #127 Windows: Fix test suite compilation 1143 #126 #127 Windows: Fix compilation for Visual Studio 2012 1144 Windows: Upgrade shipped project files to Visual Studio 2017 1145 #33 #132 tests: Mass-fix compilation for XML_UNICODE_WCHAR_T 1146 #129 examples: Fix compilation for XML_UNICODE_WCHAR_T 1147 #130 benchmark: Fix compilation for XML_UNICODE_WCHAR_T 1148 #144 xmlwf: Fix compilation for XML_UNICODE_WCHAR_T; still needs 1149 Windows or MinGW for 2-byte wchar_t 1150 #9 Address two Clang Static Analyzer false positives 1151 #59 Resolve troublesome macros hiding parser struct membership 1152 and dereferencing that pointer 1153 #6 Resolve superfluous internal malloc/realloc switch 1154 #153 #155 Improve docbook2x-man detection 1155 #160 Undefine NDEBUG in the test suite (rather than rejecting it) 1156 #161 Address compiler warnings 1157 Version info bumped from 7:6:6 to 7:7:6 1158 1159 Special thanks to: 1160 Benbuck Nason 1161 Hans Wennborg 1162 José Gutiérrez de la Concha 1163 Pedro Monreal Gonzalez 1164 Rhodri James 1165 Rolf Ade 1166 Stephen Groat 1167 and 1168 Core Infrastructure Initiative 1169 1170Release 2.2.4 Sat August 19 2017 1171 Bug fixes: 1172 #115 Fix copying of partial characters for UTF-8 input 1173 1174 Other changes: 1175 #109 Fix "make check" for non-x86 architectures that default 1176 to unsigned type char (-128..127 rather than 0..255) 1177 #109 coverage.sh: Cover -funsigned-char 1178 Autotools: Introduce --without-xmlwf argument 1179 #65 Autotools: Replace handwritten Makefile with GNU Automake 1180 #43 CMake: Auto-detect high quality entropy extractors, add new 1181 option USE_libbsd=ON to use arc4random_buf of libbsd 1182 #74 CMake: Add -fno-strict-aliasing only where supported 1183 #114 CMake: Always honor manually set BUILD_* options 1184 #114 CMake: Compile man page if docbook2x-man is available, only 1185 #117 Include file tests/xmltest.log.expected in source tarball 1186 (required for "make run-xmltest") 1187 #117 Include (existing) Visual Studio 2013 files in source tarball 1188 Improve test suite error output 1189 #111 Fix some typos in documentation 1190 Version info bumped from 7:5:6 to 7:6:6 1191 1192 Special thanks to: 1193 Jakub Wilk 1194 Joe Orton 1195 Lin Tian 1196 Rolf Eike Beer 1197 1198Release 2.2.3 Wed August 2 2017 1199 Security fixes: 1200 #82 CVE-2017-11742 -- Windows: Fix DLL hijacking vulnerability 1201 using Steve Holme's LoadLibrary wrapper for/of cURL 1202 1203 Bug fixes: 1204 #85 Fix a dangling pointer issue related to realloc 1205 1206 Other changes: 1207 Increase code coverage 1208 #91 Linux: Allow getrandom to fail if nonblocking pool has not 1209 yet been initialized and read /dev/urandom then, instead. 1210 This is in line with what recent Python does. 1211 #81 Pre-10.7/Lion macOS: Support entropy from arc4random 1212 #86 Check that a UTF-16 encoding in an XML declaration has the 1213 right endianness 1214 #4 #5 #7 Recover correctly when some reallocations fail 1215 Repair "./configure && make" for systems without any 1216 provider of high quality entropy 1217 and try reading /dev/urandom on those 1218 Ensure that user-defined character encodings have converter 1219 functions when they are needed 1220 Fix mis-leading description of argument -c in xmlwf.1 1221 Rely on macro HAVE_ARC4RANDOM_BUF (rather than __CloudABI__) 1222 for CloudABI 1223 #100 Fix use of SIPHASH_MAIN in siphash.h 1224 #23 Test suite: Fix memory leaks 1225 Version info bumped from 7:4:6 to 7:5:6 1226 1227 Special thanks to: 1228 Chanho Park 1229 Joe Orton 1230 Pascal Cuoq 1231 Rhodri James 1232 Simon McVittie 1233 Vadim Zeitlin 1234 Viktor Szakats 1235 and 1236 Core Infrastructure Initiative 1237 1238Release 2.2.2 Wed July 12 2017 1239 Security fixes: 1240 #43 Protect against compilation without any source of high 1241 quality entropy enabled, e.g. with CMake build system; 1242 commit ff0207e6076e9828e536b8d9cd45c9c92069b895 1243 #60 Windows with _UNICODE: 1244 Unintended use of LoadLibraryW with a non-wide string 1245 resulted in failure to load advapi32.dll and degradation 1246 in quality of used entropy when compiled with _UNICODE for 1247 Windows; you can launch existing binaries with 1248 EXPAT_ENTROPY_DEBUG=1 in the environment to inspect the 1249 quality of entropy used during runtime; commits 1250 * 95b95032f907ef1cd17ee7a9a1768010a825d61d 1251 * 73a5a2e9c081f49f2d775cf7ced864158b68dc80 1252 [MOX-006] Fix non-NULL parser parameter validation in XML_Parse; 1253 resulted in NULL dereference, previously; 1254 commit ac256dafdffc9622ab0dc2c62fcecb0dfcfa71fe 1255 1256 Bug fixes: 1257 #69 Fix improper use of unsigned long long integer literals 1258 1259 Other changes: 1260 #73 Start requiring a C99 compiler 1261 #49 Fix "==" Bashism in configure script 1262 #50 Fix too eager getrandom detection for Debian GNU/kFreeBSD 1263 #52 and macOS 1264 #51 Address lack of stdint.h in Visual Studio 2003 to 2008 1265 #58 Address compile warnings 1266 #68 Fix "./buildconf.sh && ./configure" for some versions 1267 of Dash for /bin/sh 1268 #72 CMake: Ease use of Expat in context of a parent project 1269 with multiple CMakeLists.txt files 1270 #72 CMake: Resolve mistaken executable permissions 1271 #76 Address compile warning with -DNDEBUG (not recommended!) 1272 #77 Address compile warning about macro redefinition 1273 1274 Special thanks to: 1275 Alexander Bluhm 1276 Ben Boeckel 1277 Cătălin Răceanu 1278 Kerin Millar 1279 László Böszörményi 1280 S. P. Zeidler 1281 Segev Finer 1282 Václav Slavík 1283 Victor Stinner 1284 Viktor Szakats 1285 and 1286 Radically Open Security 1287 1288Release 2.2.1 Sat June 17 2017 1289 Security fixes: 1290 CVE-2017-9233 -- External entity infinite loop DoS 1291 Details: https://libexpat.github.io/doc/cve-2017-9233/ 1292 Commit c4bf96bb51dd2a1b0e185374362ee136fe2c9d7f 1293 [MOX-002] CVE-2016-9063 -- Detect integer overflow; commit 1294 d4f735b88d9932bd5039df2335eefdd0723dbe20 1295 (Fixed version of existing downstream patches!) 1296 (SF.net) #539 Fix regression from fix to CVE-2016-0718 cutting off 1297 longer tag names; commits 1298 * 896b6c1fd3b842f377d1b62135dccf0a579cf65d 1299 * af507cef2c93cb8d40062a0abe43a4f4e9158fb2 1300 #16 * 0dbbf43fdb20f593ddf4fa1ff67288000dd4a7fd 1301 #25 More integer overflow detection (function poolGrow); commits 1302 * 810b74e4703dcfdd8f404e3cb177d44684775143 1303 * 44178553f3539ce69d34abee77a05e879a7982ac 1304 [MOX-002] Detect overflow from len=INT_MAX call to XML_Parse; commits 1305 * 4be2cb5afcc018d996f34bbbce6374b7befad47f 1306 * 7e5b71b748491b6e459e5c9a1d090820f94544d8 1307 [MOX-005] #30 Use high quality entropy for hash initialization: 1308 * arc4random_buf on BSD, systems with libbsd 1309 (when configured with --with-libbsd), CloudABI 1310 * RtlGenRandom on Windows XP / Server 2003 and later 1311 * getrandom on Linux 3.17+ 1312 In a way, that's still part of CVE-2016-5300. 1313 https://github.com/libexpat/libexpat/pull/30/commits 1314 [MOX-005] For the low quality entropy extraction fallback code, 1315 the parser instance address can no longer leak, commit 1316 04ad658bd3079dd15cb60fc67087900f0ff4b083 1317 [MOX-003] Prevent use of uninitialised variable; commit 1318 [MOX-004] a4dc944f37b664a3ca7199c624a98ee37babdb4b 1319 Add missing parameter validation to public API functions 1320 and dedicated error code XML_ERROR_INVALID_ARGUMENT: 1321 [MOX-006] * NULL checks; commits 1322 * d37f74b2b7149a3a95a680c4c4cd2a451a51d60a (merge/many) 1323 * 9ed727064b675b7180c98cb3d4f75efba6966681 1324 * 6a747c837c50114dfa413994e07c0ba477be4534 1325 * Negative length (XML_Parse); commit 1326 [MOX-002] 70db8d2538a10f4c022655d6895e4c3e78692e7f 1327 [MOX-001] #35 Change hash algorithm to William Ahern's version of SipHash 1328 to go further with fixing CVE-2012-0876. 1329 https://github.com/libexpat/libexpat/pull/39/commits 1330 1331 Bug fixes: 1332 #32 Fix sharing of hash salt across parsers; 1333 relevant where XML_ExternalEntityParserCreate is called 1334 prior to XML_Parse, in particular (e.g. FBReader) 1335 #28 xmlwf: Auto-disable use of memory-mapping (and parsing 1336 as a single chunk) for files larger than ~1 GB (2^30 bytes) 1337 rather than failing with error "out of memory" 1338 #3 Fix double free after malloc failure in DTD code; commit 1339 7ae9c3d3af433cd4defe95234eae7dc8ed15637f 1340 #17 Fix memory leak on parser error for unbound XML attribute 1341 prefix with new namespaces defined in the same tag; 1342 found by Google's OSS-Fuzz; commits 1343 * 16f87daae5a16132e479e4f71862128c7a915c73 1344 * b47dbc9745932c160893d433220e462bd605f8cd 1345 xmlwf on Windows: Add missing calls to CloseHandle 1346 1347 New features: 1348 #30 Introduced environment switch EXPAT_ENTROPY_DEBUG=1 1349 for runtime debugging of entropy extraction 1350 1351 Other changes: 1352 Increase code coverage 1353 #33 Reject use of XML_UNICODE_WCHAR_T with sizeof(wchar_t) != 2; 1354 XML_UNICODE_WCHAR_T was never meant to be used outside 1355 of Windows; 4-byte wchar_t is common on Linux 1356 (SF.net) #538 Start using -fno-strict-aliasing 1357 (SF.net) #540 Support compilation against cloudlibc of CloudABI 1358 Allow MinGW cross-compilation 1359 (SF.net) #534 CMake: Introduce option "BUILD_doc" (enabled by default) 1360 to bypass compilation of the xmlwf.1 man page 1361 (SF.net) pr2 CMake: Introduce option "INSTALL" (enabled by default) 1362 to bypass installation of expat files 1363 CMake: Fix ninja support 1364 Autotools: Add parameters --enable-xml-context [COUNT] 1365 and --disable-xml-context; default of context of 1024 1366 bytes enabled unchanged 1367 #14 Drop AmigaOS 4.x code and includes 1368 #14 Drop ancient build systems: 1369 * Borland C++ Builder 1370 * OpenVMS 1371 * Open Watcom 1372 * Visual Studio 6.0 1373 * Pre-X Mac OS (MPW Makefile) 1374 If you happen to rely on some of these, please get in 1375 touch for joining with maintenance. 1376 #10 Move from WIN32 to _WIN32 1377 #13 Fix "make run-xmltest" order instability 1378 Address compile warnings 1379 Bump version info from 7:2:6 to 7:3:6 1380 Add AUTHORS file 1381 1382 Infrastructure: 1383 #1 Migrate from SourceForge to GitHub (except downloads): 1384 https://github.com/libexpat/ 1385 #1 Re-create http://libexpat.org/ project website 1386 Start utilizing Travis CI 1387 1388 Special thanks to: 1389 Andy Wang 1390 Don Lewis 1391 Ed Schouten 1392 Karl Waclawek 1393 Pascal Cuoq 1394 Rhodri James 1395 Sergei Nikulov 1396 Tobias Taschner 1397 Viktor Szakats 1398 and 1399 Core Infrastructure Initiative 1400 Mozilla Foundation (MOSS Track 3: Secure Open Source) 1401 Radically Open Security 1402 1403Release 2.2.0 Tue June 21 2016 1404 Security fixes: 1405 #537 CVE-2016-0718 -- Fix crash on malformed input 1406 CVE-2016-4472 -- Improve insufficient fix to CVE-2015-1283 / 1407 CVE-2015-2716 introduced with Expat 2.1.1 1408 #499 CVE-2016-5300 -- Use more entropy for hash initialization 1409 than the original fix to CVE-2012-0876 1410 #519 CVE-2012-6702 -- Resolve troublesome internal call to srand 1411 that was introduced with Expat 2.1.0 1412 when addressing CVE-2012-0876 (issue #496) 1413 1414 Bug fixes: 1415 Fix uninitialized reads of size 1 1416 (e.g. in little2_updatePosition) 1417 Fix detection of UTF-8 character boundaries 1418 1419 Other changes: 1420 #532 Fix compilation for Visual Studio 2010 (keyword "C99") 1421 Autotools: Resolve use of "$<" to better support bmake 1422 Autotools: Add QA script "qa.sh" (and make target "qa") 1423 Autotools: Respect CXXFLAGS if given 1424 Autotools: Fix "make run-xmltest" 1425 Autotools: Have "make run-xmltest" check for expected output 1426 p90 CMake: Fix static build (BUILD_shared=OFF) on Windows 1427 #536 CMake: Add soversion, support -DNO_SONAME=yes to bypass 1428 #323 CMake: Add suffix "d" to differentiate debug from release 1429 CMake: Define WIN32 with CMake on Windows 1430 Annotate memory allocators for GCC 1431 Address all currently known compile warnings 1432 Make sure that API symbols remain visible despite 1433 -fvisibility=hidden 1434 Remove executable flag from source files 1435 Resolve COMPILED_FROM_DSP in favor of WIN32 1436 1437 Special thanks to: 1438 Björn Lindahl 1439 Christian Heimes 1440 Cristian Rodríguez 1441 Daniel Krügler 1442 Gustavo Grieco 1443 Karl Waclawek 1444 László Böszörményi 1445 Marco Grassi 1446 Pascal Cuoq 1447 Sergei Nikulov 1448 Thomas Beutlich 1449 Warren Young 1450 Yann Droneaud 1451 1452Release 2.1.1 Sat March 12 2016 1453 Security fixes: 1454 #582: CVE-2015-1283 - Multiple integer overflows in XML_GetBuffer 1455 1456 Bug fixes: 1457 #502: Fix potential null pointer dereference 1458 #520: Symbol XML_SetHashSalt was not exported 1459 Output of "xmlwf -h" was incomplete 1460 1461 Other changes: 1462 #503: Document behavior of calling XML_SetHashSalt with salt 0 1463 Minor improvements to man page xmlwf(1) 1464 Improvements to the experimental CMake build system 1465 libtool now invoked with --verbose 1466 1467Release 2.1.0 Sat March 24 2012 1468 - Security fixes: 1469 #2958794: CVE-2012-1148 - Memory leak in poolGrow. 1470 #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. 1471 #3496608: CVE-2012-0876 - Hash DOS attack. 1472 #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). 1473 #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. 1474 - Bug Fixes: 1475 #1742315: Harmful XML_ParserCreateNS suggestion. 1476 #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. 1477 #1983953, 2517952, 2517962, 2649838: 1478 Build modifications using autoreconf instead of buildconf.sh. 1479 #2815947, #2884086: OBJEXT and EXEEXT support while building. 1480 #2517938: xmlwf should return non-zero exit status if not well-formed. 1481 #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. 1482 #2855609: Dangling positionPtr after error. 1483 #2990652: CMake support. 1484 #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. 1485 #3206497: Uninitialized memory returned from XML_Parse. 1486 #3287849: make check fails on mingw-w64. 1487 - Patches: 1488 #1749198: pkg-config support. 1489 #3010222: Fix for bug #3010819. 1490 #3312568: CMake support. 1491 #3446384: Report byte offsets for attr names and values. 1492 - New Features / API changes: 1493 Added new API member XML_SetHashSalt() that allows setting an initial 1494 value (salt) for hash calculations. This is part of the fix for 1495 bug #3496608 to randomize hash parameters. 1496 When compiled with XML_ATTR_INFO defined, adds new API member 1497 XML_GetAttributeInfo() that allows retrieving the byte 1498 offsets for attribute names and values (patch #3446384). 1499 Added CMake build system. 1500 See bug #2990652 and patch #3312568. 1501 Added run-benchmark target to Makefile.in - relies on testdata module 1502 present in the same relative location as in the repository. 1503 1504Release 2.0.1 Tue June 5 2007 1505 - Fixed bugs #1515266, #1515600: The character data handler's calling 1506 of XML_StopParser() was not handled properly; if the parser was 1507 stopped and the handler set to NULL, the parser would segfault. 1508 - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed 1509 some character constants to be ASCII encoded. 1510 - Minor cleanups of the test harness. 1511 - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. 1512 - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. 1513 - Fixes and improvements for Windows platform: 1514 bugs #1409451, #1476160, #1548182, #1602769, #1717322. 1515 - Build fixes for various platforms: 1516 HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. 1517 All Unix: #1554618 (refreshed config.sub/config.guess). 1518 #1490371, #1613457: support both, DESTDIR and INSTALL_ROOT, 1519 without relying on GNU-Make specific features. 1520 #1647805: Patched configure.in to work better with Intel compiler. 1521 - Fixes to Makefile.in to have make check work correctly: 1522 bugs #1408143, #1535603, #1536684. 1523 - Added Open Watcom support: patch #1523242. 1524 1525Release 2.0.0 Wed Jan 11 2006 1526 - We no longer use the "check" library for C unit testing; we 1527 always use the (partial) internal implementation of the API. 1528 - Report XML_NS setting via XML_GetFeatureList(). 1529 - Fixed headers for use from C++. 1530 - XML_GetCurrentLineNumber() and XML_GetCurrentColumnNumber() 1531 now return unsigned integers. 1532 - Added XML_LARGE_SIZE switch to enable 64-bit integers for 1533 byte indexes and line/column numbers. 1534 - Updated to use libtool 1.5.22 (the most recent). 1535 - Added support for AmigaOS. 1536 - Some mostly minor bug fixes. SF issues include: #1006708, 1537 #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. 1538 1539Release 1.95.8 Fri Jul 23 2004 1540 - Major new feature: suspend/resume. Handlers can now request 1541 that a parse be suspended for later resumption or aborted 1542 altogether. See "Temporarily Stopping Parsing" in the 1543 documentation for more details. 1544 - Some mostly minor bug fixes, but compilation should no 1545 longer generate warnings on most platforms. SF issues 1546 include: #827319, #840173, #846309, #888329, #896188, #923913, 1547 #928113, #961698, #985192. 1548 1549Release 1.95.7 Mon Oct 20 2003 1550 - Fixed enum XML_Status issue (reported on SourceForge many 1551 times), so compilers that are properly picky will be happy. 1552 - Introduced an XMLCALL macro to control the calling 1553 convention used by the Expat API; this macro should be used 1554 to annotate prototypes and definitions of callback 1555 implementations in code compiled with a calling convention 1556 other than the default convention for the host platform. 1557 - Improved ability to build without the configure-generated 1558 expat_config.h header. This is useful for applications 1559 which embed Expat rather than linking in the library. 1560 - Fixed a variety of bugs: see SF issues #458907, #609603, 1561 #676844, #679754, #692878, #692964, #695401, #699323, #699487, 1562 #820946. 1563 - Improved hash table lookups. 1564 - Added more regression tests and improved documentation. 1565 1566Release 1.95.6 Tue Jan 28 2003 1567 - Added XML_FreeContentModel(). 1568 - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). 1569 - Fixed a variety of bugs: see SF issues #615606, #616863, 1570 #618199, #653180, #673791. 1571 - Enhanced the regression test suite. 1572 - Man page improvements: includes SF issue #632146. 1573 1574Release 1.95.5 Fri Sep 6 2002 1575 - Added XML_UseForeignDTD() for improved SAX2 support. 1576 - Added XML_GetFeatureList(). 1577 - Defined XML_Bool type and the values XML_TRUE and XML_FALSE. 1578 - Use an incomplete struct instead of a void* for the parser 1579 (may not retain). 1580 - Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected. 1581 - Finally fixed bug where default handler would report DTD 1582 events that were already handled by another handler. 1583 Initial patch contributed by Darryl Miles. 1584 - Removed unnecessary DllMain() function that caused static 1585 linking into a DLL to be difficult. 1586 - Added VC++ projects for building static libraries. 1587 - Reduced line-length for all source code and headers to be 1588 no longer than 80 characters, to help with AS/400 support. 1589 - Reduced memory copying during parsing (SF patch #600964). 1590 - Fixed a variety of bugs: see SF issues #580793, #434664, 1591 #483514, #580503, #581069, #584041, #584183, #584832, #585537, 1592 #596555, #596678, #598352, #598944, #599715, #600479, #600971. 1593 1594Release 1.95.4 Fri Jul 12 2002 1595 - Added support for VMS, contributed by Craig Berry. See 1596 vms/README.vms for more information. 1597 - Added Mac OS (classic) support, with a makefile for MPW, 1598 contributed by Thomas Wegner and Daryle Walker. 1599 - Added Borland C++ Builder 5 / BCC 5.5 support, contributed 1600 by Patrick McConnell (SF patch #538032). 1601 - Fixed a variety of bugs: see SF issues #441449, #563184, 1602 #564342, #566334, #566901, #569461, #570263, #575168, #579196. 1603 - Made skippedEntityHandler conform to SAX2 (see source comment) 1604 - Re-implemented WFC: Entity Declared from XML 1.0 spec and 1605 added a new error "entity declared in parameter entity": 1606 see SF bug report #569461 and SF patch #578161 1607 - Re-implemented section 5.1 from XML 1.0 spec: 1608 see SF bug report #570263 and SF patch #578161 1609 1610Release 1.95.3 Mon Jun 3 2002 1611 - Added a project to the MSVC workspace to create a wchar_t 1612 version of the library; the DLLs are named libexpatw.dll. 1613 - Changed the name of the Windows DLLs from expat.dll to 1614 libexpat.dll; this fixes SF bug #432456. 1615 - Added the XML_ParserReset() API function. 1616 - Fixed XML_SetReturnNSTriplet() to work for element names. 1617 - Made the XML_UNICODE builds usable (thanks, Karl!). 1618 - Allow xmlwf to read from standard input. 1619 - Install a man page for xmlwf on Unix systems. 1620 - Fixed many bugs; see SF bug reports #231864, #461380, #464837, 1621 #466885, #469226, #477667, #484419, #487840, #494749, #496505, 1622 #547350. Other bugs which we can't test as easily may also 1623 have been fixed, especially in the area of build support. 1624 1625Release 1.95.2 Fri Jul 27 2001 1626 - More changes to make MSVC happy with the build; add a single 1627 workspace to support both the library and xmlwf application. 1628 - Added a Windows installer for Windows users; includes 1629 xmlwf.exe. 1630 - Added compile-time constants that can be used to determine the 1631 Expat version 1632 - Removed a lot of GNU-specific dependencies to aide portability 1633 among the various Unix flavors. 1634 - Fix the UTF-8 BOM bug. 1635 - Cleaned up warning messages for several compilers. 1636 - Added the -Wall, -Wstrict-prototypes options for GCC. 1637 1638Release 1.95.1 Sun Oct 22 15:11:36 EDT 2000 1639 - Changes to get expat to build under Microsoft compiler 1640 - Removed all aborts and instead return an UNEXPECTED_STATE error. 1641 - Fixed a bug where a stray '%' in an entity value would cause an 1642 abort. 1643 - Defined XML_SetEndNamespaceDeclHandler. Thanks to Darryl Miles for 1644 finding this oversight. 1645 - Changed default patterns in lib/Makefile.in to fit non-GNU makes 1646 Thanks to robin@unrated.net for reporting and providing an 1647 account to test on. 1648 - The reference had the wrong label for XML_SetStartNamespaceDecl. 1649 Reported by an anonymous user. 1650 1651Release 1.95.0 Fri Sep 29 2000 1652 - XML_ParserCreate_MM 1653 Allows you to set a memory management suite to replace the 1654 standard malloc,realloc, and free. 1655 - XML_SetReturnNSTriplet 1656 If you turn this feature on when namespace processing is in 1657 effect, then qualified, prefixed element and attribute names 1658 are returned as "uri|name|prefix" where '|' is whatever 1659 separator character is used in namespace processing. 1660 - Merged in features from perl-expat 1661 o XML_SetElementDeclHandler 1662 o XML_SetAttlistDeclHandler 1663 o XML_SetXmlDeclHandler 1664 o XML_SetEntityDeclHandler 1665 o StartDoctypeDeclHandler takes 3 additional parameters: 1666 sysid, pubid, has_internal_subset 1667 o Many paired handler setters (like XML_SetElementHandler) 1668 now have corresponding individual handler setters 1669 o XML_GetInputContext for getting the input context of 1670 the current parse position. 1671 - Added reference material 1672 - Packaged into a distribution that builds a sharable library 1673