Changes 95 KB

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