Changes 83 KB

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