Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 05bd1720 | 2025-03-01 10:25:29 | parser: Fix parsing of DTD content Regressed in 2.11. Fixes #868. | ||
| 9f86dae9 | 2024-12-15 14:27:05 | test: Add test case for UAF in xmlSchemaIDCFillNodeTables | ||
| 71122421 | 2025-02-13 14:04:10 | html: Make implied <p> tags more deterministic libxml2's HTML parser adds <p> start tags in some situations. This behavior, which doesn't follow any standard, was added in 2000, see here: http://veillard.com/XML/messages/0655.html Text nodes that only contain whitespace don't imply a <p> tag, but the whitespace check cannot work reliably if we're parsing partial text data which can happen with both pull and push parser. The logic in `areBlanks` is hard to follow. The checks involving `CUR` depend on the position of the input pointer and seem dubious. It's also possible that the behavior changed inadvertently with a later commit. As a result, it's hard to come up with good test cases. We now process leading whitespace before creating implied tags. This is more in line with HTML5 and should avoid at least some issues with partial text data. For example, parsing the string "<head> x" used to result in: <html> <head></head> <body><p> x</p></body> </html> And now results in: <html> <head> </head> <body><p>x</p></body> </html> Except for the implied <p> tag, this matches HTML5. | ||
| b4d3d87e | 2025-02-01 22:02:33 | parser: Fix parsing of doctype declarations Fix some long-standing issues. Fixes #504. | ||
| 45914614 | 2024-11-05 12:05:14 | xpath: Fix parsing of non-ASCII names Fix a long-standing issue where QNames starting with a non-ASCII character would be rejected. This became more visible after "streaming" XPath evaluation was disabled since the latter handled non-ASCII names correctly. Fixes #818. | ||
| ffb058f4 | 2024-10-28 20:12:52 | parser: Fix detection of duplicate attributes We really need a second scan if more than one namespace clash was detected. | ||
| c6af1017 | 2024-09-08 20:45:48 | html: Test tokenizer against html5lib test suite | ||
| e1834745 | 2024-09-07 00:54:25 | html: Add character data tests | ||
| 59511792 | 2024-09-03 15:52:44 | html: Parse named character references according to HTML5 | ||
| bd9eed46 | 2024-09-02 18:37:41 | parser: Make unsupported encodings an error in declarations This was changed in 45157261, but in encoding declarations, unsupported encodings should raise a fatal error. Fixes #794. | ||
| 8ae06d52 | 2024-08-29 00:07:27 | SAX2: Don't merge CDATA sections The Document Object Model (DOM) Level 3 Core Specification says: > Adjacent CDATASection nodes are not merged by use of the normalize > method of the Node interface. Fixes #412. | ||
| 322e733b | 2024-07-18 19:27:43 | xinclude: Fix fallback for text includes Fixes #772. | ||
| 30be984a | 2024-06-28 20:37:47 | encoding: Rework ISO-8859-X conversion Optimize code. Pass tables as context parameter. Check for XML_ENC_ERR_SPACE. | ||
| 7c11da2d | 2024-06-27 12:47:47 | tests: Clarify licence of test/intsubset2.xml | ||
| f06fc933 | 2024-06-22 03:28:27 | tests: Move tests for executables to separate script Move tests for xmllint shell and xmlcatalog to separate scripts and enabled them in Autotools. | ||
| 1dd5e76a | 2024-06-17 21:06:46 | xinclude: Don't remove root element Don't replace include element at root with empty nodeset. | ||
| 52ce0d70 | 2024-06-17 17:35:12 | tests: Add XInclude test for issue #733 | ||
| 669bd349 | 2024-06-12 18:20:01 | xpointer: Remove support for XPointer locations The latest spec for what it essentially an XPath extension seems to be this working draft from 2002: https://www.w3.org/TR/xptr-xpointer/ The xpointer() scheme is listed as "being reviewed" in the XPointer registry since at least 2006. libxml2 seems to be the only modern software that tries to implement this spec, but the code has many bugs and quality issues. If you configure --with-legacy, old symbols are retained for ABI compatibility. | ||
| 651465f9 | 2024-04-24 22:50:53 | test: Remove unused test files | ||
| 45fe9924 | 2024-04-22 17:12:54 | parser: Don't create reference in xmlLookupGeneralEntity This should only be done in xmlParseReference. The handling of undeclared entities is still somewhat inconsistent. In element content we create references even if entity substitution is enabled. In attribute values undeclared entities are always ignored. | ||
| f506ec66 | 2024-04-15 11:27:44 | parser: Always decode entities in namespace URIs Also decode entities in namespace URIs if entity substitution wasn't requested. This should fix some corner cases when comparing namespace URIs. The Namespaces in XML 1.0 spec says: > In a namespace declaration, the URI reference is the normalized value > of the attribute, so replacement of XML character and entity > references has already been done before any comparison. Make the serialization code escape special characters in namespace URIs like in attribute values. This fixes serialization if entities were substituted when parsing. Fixes https://gitlab.gnome.org/GNOME/libxslt/-/issues/106 | ||
| 5bb84b47 | 2024-04-04 11:55:28 | relaxng: Fix tree corruption in xmlRelaxNGParseNameClass Don't create cycles in tree structure. This will lead to an infinite loop or call stack overflow later. Closes: https://gitlab.gnome.org/GNOME/libxml2/-/issues/711 | ||
| 186562a1 | 2024-03-12 19:55:33 | parser: Fix detection of duplicate attributes in XML namespace Fixes a regression from commit e0dd330b, resulting in duplicate attributes in the predefined XML namespace not being detected or extraneous default attributes being passed. Fixes #704. | ||
| f237e5b9 | 2024-01-05 15:40:23 | parser: Avoid duplicate namespace errors Don't report an extra attribute uniqueness error if a namespace is undeclared. This matches old behavior. | ||
| 37c6618b | 2023-12-30 02:50:34 | parser: Rework parsing of attribute and entity values Don't use a separate function to handle "complex" attributes. Validate UTF-8 byte sequences without decoding. This should improve performance considerably when parsing multi-byte UTF-8 sequences. Use a string buffer to avoid unnecessary allocations and copying when expanding entities. Normalize attribute values in a single pass while expanding entities. Be more lenient in recovery mode. If no entity substitution was requested, validate entities without expanding. Fixes #596. Also fixes #655. | ||
| d944a415 | 2023-12-26 02:10:35 | parser: Fix in-parameter-entity and in-external-dtd checks Use in ctxt->input->entity instead of ctxt->inputNr to determine whether we are inside a parameter entity. Stop using ctxt->external to check whether we're in an external DTD. This is signaled by ctxt->inSubset == 2. | ||
| b8313b58 | 2023-12-26 21:59:08 | xpath: Rewrite substring-before and substring-after Don't use buffers. Check malloc failures. | ||
| f3fa34dc | 2023-12-26 22:37:26 | parser: Fix general entity parsing Clear namespace database. Ignore non-fatal errors. | ||
| 6e3a2ac6 | 2023-12-22 21:38:50 | xinclude: Rework xml:base fixup The xml:base fixup was broken in more complex cases. Also avoid parsing and building the included URI multiple times. | ||
| f0df3e6d | 2023-12-21 14:35:18 | tests: Try to fix RelaxNG test cases These were added recently in ea695ac0 and 8074b881 but were a total mess of symbolic links and apparently mixed up files. Symbolic links don't work on Windows. Try to salvage one of the tests. | ||
| 83c6aeef | 2023-12-18 21:12:29 | relaxng: Improve error handling Pass RelaxNG structured error handler to XML parser. Handle malloc failure from xmlRaiseError. Remove argument from memory error handler. Use xmlRaiseMemoryError. Don't use xmlGenericError. Remove TODO macro. | ||
| 7d446e97 | 2023-12-08 12:13:49 | parser: Fix namespaces redefined from default attributes This regressed in commit e0dd330b. Also fixes a long-standing issue where namespaces from default attributes weren't added if they match an existing namespace. Fixes #643. | ||
| e3959461 | 2023-11-30 16:15:46 | html: Reenable buggy detection of XML declarations Switch to UTF-8 if a document starts with '<?xm' to match old behavior. Also enable this check in the push parser. Fixes #637. | ||
| 43b511fa | 2023-11-26 14:31:39 | parser: Make CRLF increment line number Partial revert of cb927e85 fixing CRLFs not incrementing the line number. This requires to rework xmlParseQNameHashed. The original implementation prompted the change to xmlCurrentChar which really shouldn't modify the 'cur' pointer as side effect. But the NEXTL macro relies on this behavior. Ultimately, we should reintroduce the change to xmlCurrentChar and fix the NEXTL macro. This will lead to single CRs incrementing the line number as well which seems more consistent. Fixes #628. | ||
| a2b5c90a | 2023-11-21 14:35:54 | hash: Fix deletion of entries during scan Functions like xmlCleanSpecialAttr scan a hash table and possibly delete entries in the callback. xmlHashScanFull must detect such deletions and rescan the entry. This regressed when rewriting the hash table code in 4a513d56. Fixes #626. | ||
| 7a2d412f | 2023-10-31 20:15:38 | parser: Copy default namespace in xmlParseBalancedChunkMemory | ||
| e0c2f14d | 2023-10-31 13:53:15 | parser: Copy namespaces in xmlParseBalancedChunkMemory Reenable copying of namespaces but don't set SAX data. This should match the old behavior. | ||
| b76d81da | 2023-10-06 11:50:29 | parser: Fix regression when push parsing parameter entities Short-lived regression from 834b8123. Also shrink parameter entity buffers when push parsing. | ||
| 134d2ad8 | 2023-10-06 00:31:44 | parser: Protect against quadratic default attribute expansion | ||
| 0ba22c05 | 2023-10-05 22:05:04 | parser: Support encoded external PEs in entity values Corner case which was never supported. | ||
| e48f3d8e | 2023-09-27 16:47:37 | tests: Add more tests for redefined attributes | ||
| 53050b1d | 2023-08-29 20:06:43 | parser: More fixes to push parser error handling | ||
| bbd918b2 | 2023-08-29 15:56:37 | parser: Fix detection of null bytes Also suppress misleading extra errors. Fixes #122. | ||
| 855818bd | 2023-08-08 15:21:37 | parser: Check for truncated multi-byte sequences When decoding input data, check whether the "raw" buffer is empty after parsing the document. Otherwise, the input ends with a truncated multi-byte sequence which shouldn't be silently ignored. | ||
| e4f85f1b | 2023-04-07 11:46:35 | [CVE-2023-28484] Fix null deref in xmlSchemaFixupComplexType Fix a null pointer dereference when parsing (invalid) XML schemas. Thanks to Robby Simpson for the report! Fixes #491. | ||
| d7d0bc65 | 2023-03-31 16:47:48 | SAX2: Ignore namespaces in HTML documents In commit 21ca8829, we started to ignore namespaces in HTML element names but we still called xmlSplitQName, effectively stripping the namespace prefix. This would cause elements like <o:p> being parsed as <p>. Now we leave the name untouched. Fixes #508. | ||
| 3f69fc80 | 2023-03-08 13:58:49 | parser: Tighten expansion limits - Lower the amount of expansion which is always allowed from 10MB to 1MB. - Lower the maximum amplification factor from 10 to 5. - Lower the "fixed cost" from 50 to 20. | ||
| e20f4d7a | 2023-02-13 14:38:05 | xinclude: Fix quadratic behavior in xmlXIncludeLoadTxt Also make text inclusions work with memory buffers, for example when using a custom entity loader, and fix a memory leak in case of invalid characters. Fixes #483. | ||
| 608c65bb | 2023-01-18 15:15:41 | xpath: number('-') should return NaN Fixes https://gitlab.gnome.org/GNOME/libxslt/-/issues/81 | ||
| d320a683 | 2023-01-17 13:50:51 | parser: Fix entity check in attributes Don't set the "checked" flag when checking entities in default attribute values. These entities could reference other entities which weren't defined yet, so the check isn't reliable. This fixes a short-lived regression which could lead to a call stack overflow later in xmlStringGetNodeList. | ||
| cfc036bd | 2022-12-21 19:27:45 | testrecurse: Test parameter entity accounting | ||
| 079da5b2 | 2022-12-21 03:26:31 | testrecurse: Add external entities to huge test | ||
| 01bcb23d | 2022-12-21 01:01:36 | testrecurse: Add test cases for external entities Add test cases for external general and parameter entities. | ||
| 046f99c5 | 2022-12-21 05:15:51 | testrecurse: Add lol_param.xml Add test case contributed by Sebastian Pipping for CVE-2021-3541. | ||
| fafa0252 | 2022-12-21 01:01:07 | testrecurse: Rename test files | ||
| ae0c9cfa | 2022-12-12 23:54:39 | uri: Fix handling of port numbers Allow port number without host, real fix for #71. Also compare port numbers in xmlBuildRelativeURI. Fix handling of port numbers in xmlUriEscape. | ||
| 76c6da42 | 2022-12-04 23:01:00 | error: Make sure that error messages are valid UTF-8 This has caused issues with the Python bindings for a long time. Should fix #64. | ||
| 9c63cea5 | 2022-11-20 15:36:41 | test: Add test for push parser boundaries | ||
| b456e3bb | 2022-10-30 20:28:20 | xinclude: Always allow XPtr expressions in external documents | ||
| eef0a739 | 2022-10-30 12:21:20 | xinclude: Implement "streaming" mode When using xmlreader, XPointer expressions in XIncludes simply cannot work. Expressions can reference nodes which weren't parsed yet or which were already deleted. After fixing nested XIncludes, we reference includes which were parsed previously. When streaming, these nodes could have been deleted, leading to use-after-free errors. Disallow XPointer expressions and truncate the include table in streaming mode. | ||
| 20e2fb4c | 2022-10-23 17:52:29 | xinclude: Avoid creation of subcontexts Don't create subcontext in xmlXIncludeRecurseDoc. Save and restore 'doc' and 'incTab' instead. Make xmlXIncludeLoadFallback call xmlXIncludeCopyNode which seems safer than xmlXIncludeDoProcess since the latter may modify the document. This should also be more performant since we need to copy the whole fallback subtree anyway. Also make sure to avoid replacements in fallback elements in xmlXIncludeDoProcess. | ||
| d2ed1e4f | 2022-10-22 16:50:18 | xinclude: Limit recursion depth This avoids call stack overflows. | ||
| 34496f26 | 2022-10-22 16:09:21 | xinclude: Test for inclusion loops | ||
| bc267cb9 | 2022-10-22 02:19:22 | xinclude: Expand includes in xmlXIncludeCopyNode This should make nested includes work reliably. Fixes #424. | ||
| c99cde3f | 2022-10-22 16:59:35 | xinclude: Also test error messages The reader interface with XIncludes is somewhat broken and can generate different error messages. Start to move tests which are sketchy with reader to a separate directory. | ||
| 938105b5 | 2022-10-21 15:56:12 | Revert "xinclude: Fix regression with nested includes" This reverts commit 7f04e297318b1b908cec20711f74f75625afed7f which caused memory errors. See #424. | ||
| 7f04e297 | 2022-10-18 18:40:00 | xinclude: Fix regression with nested includes This reverts commits 74dcc10b and 87d20b55. Fixes #424. | ||
| 1d4f5d24 | 2022-09-13 16:40:31 | schemas: Fix null-pointer-deref in xmlSchemaCheckCOSSTDerivedOK Found by OSS-Fuzz. | ||
| e986d09c | 2022-07-15 14:02:26 | Skip incorrectly opened HTML comments Commit 4fd69f3e fixed handling of '<' characters not followed by an ASCII letter. But a '<!' sequence followed by invalid characters should be treated as bogus comment and skipped. Fixes #380. | ||
| 14517012 | 2022-04-23 19:19:33 | Fix parsing of subtracted regex character classes Fixes #370. | ||
| 4612ce30 | 2022-04-21 03:52:52 | Implement xpath1() XPointer scheme See https://www.w3.org/2005/04/xpointer-schemes/ | ||
| 41afa89f | 2022-04-10 14:09:29 | Fix short-lived regression in xmlStaticCopyNode Commit 7618a3b1 didn't account for coalesced text nodes. I think it would be better if xmlStaticCopyNode didn't try to coalesce text nodes at all. This code path can only be triggered if some other code doesn't coalesce text nodes properly. In this case, OSS-Fuzz found such behavior in xinclude.c. | ||
| 57b81c20 | 2022-03-05 18:20:29 | Normalize XPath strings in-place Simplify the code and fix a potential memory leak. Fixes #343. | ||
| bc06a522 | 2022-03-02 02:57:49 | Fix recursion check in xinclude.c Compare the included URL with the document's URL to detect local inclusions. Fixes #348. | ||
| 24cdc890 | 2021-07-17 14:06:49 | test coverage for abruptly-closed comments These establish baseline behavior so that the subsequent commit is clear about the behavior it will modify. | ||
| 966b0f21 | 2021-08-19 02:46:32 | Add whitespace folding for some atomic data types that it's missing on. XSD validation fails when some atomic types contain surrounding whitespace even though XML Schema Part 2: Datatypes Second Edition, section 4.3.6 says they should be collapsed. Fix this. (I am not sure whether the test is correct.) Issue: #278 | ||
| ea6e8f99 | 2021-12-20 00:34:58 | Fix certain combinations of regex range quantifiers Fix regex transitions that have both min/max and a counter. In this case, we want to save the regex state before incrementing the counter. Fixes #301 and the issue reported here: https://mail.gnome.org/archives/xml/2016-April/msg00017.html | ||
| 382fb056 | 2021-12-20 00:31:41 | Fix range quantifier on subregex Make sure to add counted exit transitions before other counter transitions. Otherwise, we won't backtrack correctly. Fixes #65. | ||
| ce0871e1 | 2022-02-20 16:44:41 | Only warn on invalid redeclarations of predefined entities Downgrade the error message to a warning since the error was ignored, anyway. Also print the name of redeclared entity. For a proper fix that also shows filename and line number of the invalid redeclaration, we'd have to - pass the parser context to the entity functions somehow, or - make these functions return distinct error codes. Partial fix for #308. | ||
| 9edc20c1 | 2022-02-07 20:38:30 | Fix double counting of CRLF in comments Fixes #151. | ||
| 5408c10c | 2022-02-04 14:00:09 | Don't normalize namespace URIs in XPointer xmlns() scheme Namespace URIs should be compared without escaping or unescaping: https://www.w3.org/TR/REC-xml-names/#NSNameComparison Fixes #289. | ||
| 1c7d91ab | 2022-02-03 23:31:19 | Fix handling of XSD with empty namespace An empty namespace means no default namespace. Fixes #303. | ||
| f480f750 | 2022-02-03 14:43:17 | Update NewsML DTD in test suite Switch to version 1.2 which has a clearer license. Fixes #291. | ||
| d85245f9 | 2022-01-16 21:39:04 | Fix regression with PEs in external DTD Fix a regression introduced with commit a28f7d87. In some cases, parameter entity references in external DTDs wouldn't be expanded. Fixes #306. | ||
| 03bb9293 | 2021-07-07 18:23:18 | Fix parse failure when 4-byte character in UTF-16 BE is split across a chunk This makes the logic in UTF16BEToUTF8() match UTF16LEToUTF8(). * encoding.c: (UTF16LEToUTF8): - Fix comment to describe what the code does. (UTF16BEToUTF8): - Fix undefined behavior which was applied to UTF16LEToUTF8() in 2f9382033e. - Add bounds check to while() loop which was applied to UTF16LEToUTF8() in be803967db. - Do not return -2 when (in >= inend) to fix the bug. This was applied to UTF16LEToUTF8() in 496a1cf592. - Inline (<< 8) statements to match UTF16LEToUTF8(). Add the following tests and results: test/text-4-byte-UTF-16-BE-offset.xml test/text-4-byte-UTF-16-BE.xml test/text-4-byte-UTF-16-LE-offset.xml test/text-4-byte-UTF-16-LE.xml | ||
| 2732b234 | 2022-01-10 13:32:14 | Fix regression parsing public IDs literals in HTML Fix regression introduced when reworking htmlParsePubidLiteral in commit 93ce33c2. Fixes #318. | ||
| 01411e7c | 2021-02-08 20:58:32 | Check for invalid redeclarations of predefined entities Implement section "4.6 Predefined Entities" of the XML 1.0 spec and check whether redeclarations of predefined entities match the original definitions. Note that some test cases declared <!ENTITY lt "<"> But the XML spec clearly states that this is illegal: > If the entities lt or amp are declared, they MUST be declared as > internal entities whose replacement text is a character reference to > the respective character (less-than sign or ampersand) being escaped; > the double escaping is REQUIRED for these entities so that references > to them produce a well-formed result. Also fixes #217 but the connection is only tangential. The integer overflow discovered by fuzzing was more related to the fact that various parts of the parser disagreed on whether to prefer predefined entities over their redeclarations. The whole situation is a mess and even depends on legacy parser options. But now that redeclarations are validated, it shouldn't make a difference. As noted in the added comment, this is also one of the cases where overly defensive checks can hide interesting logic bugs from fuzzers. | ||
| e28d9347 | 2020-08-04 14:53:19 | add test coverage for incorrectly-closed comments this establishes the baseline behavior so that subsequent commits which modify this behavior are clear about what's being changed. | ||
| 87d20b55 | 2020-08-19 13:52:08 | Fix regression introduced with commit 74dcc10b The code wasn't dead after all, but I can see no reason in delaying the XPointer evaluation. This could lead to nodes included earlier appearing in XPointer results. | ||
| d88df4bd | 2020-08-16 23:38:48 | Fix corner case with empty xi:fallback xi:fallback could become empty after recursive expansion. Use a flag to track whether nodes should be skipped. | ||
| 1abf2967 | 2020-08-06 17:51:57 | Fix exponential runtime and memory in xi:fallback processing When creating XML_XINCLUDE_START nodes, the children of the original xi:include node must be freed, otherwise fallback content is copied twice, doubling runtime and memory consumption for each nested xi:fallback/xi:include pair. Found with libFuzzer. | ||
| 0f9817c7 | 2020-06-10 16:34:52 | Don't recurse into xi:include children in xmlXIncludeDoProcess Otherwise, nested xi:include nodes might result in a use-after-free if XML_PARSE_NOXINCNODE is specified. Found with libFuzzer and ASan. | ||
| 6b4717d6 | 2020-07-06 12:36:27 | Add regexp regression tests - Bug 757711: heap-buffer-overflow in xmlFAParsePosCharGroup <https://bugzilla.gnome.org/show_bug.cgi?id=757711> - Bug 783015 - Integer-overflow in xmlFAParseQuantExact <https://bugzilla.gnome.org/show_bug.cgi?id=783015> (Regexptests): Add support for checking stderr output when running regexp tests. This makes it possible to check in test cases that fail and not see false-positive error output when running the tests. Unlike other libxml2 test suites, if there is no stderr output, no *.err file needs to be created. | ||
| 477c7f6a | 2020-06-28 15:54:23 | Fix quadratic runtime in HTML parser Commit eeb99329 removed an important optimization avoiding quadratic runtime when repeatedly scanning the input buffer for terminating characters in the HTML push parser. The related bug is https://bugzilla.gnome.org/show_bug.cgi?id=444994 Make sure that ctxt->checkIndex is always written and store additional parser state in ctxt->inSubset which is unused in the HTML parser. Found by OSS-Fuzz. | ||
| 32cb5dcc | 2020-02-11 13:16:10 | Add test case for recursive external parsed entities | ||
| 2a350ee9 | 2019-09-30 17:04:54 | Large batch of typo fixes Closes #109. | ||
| c51e38cb | 2019-09-30 13:50:02 | Make xmlParseConditionalSections non-recursive Avoid call stack overflow in deeply nested conditional sections. Found by OSS-Fuzz. | ||
| c2b0a184 | 2019-09-25 13:57:42 | Fix empty branch in regex Fixes bug 649244: https://bugzilla.gnome.org/show_bug.cgi?id=649244 Closes #57. | ||
| 6705f4d2 | 2019-09-16 15:45:27 | Remove executable bit from non-executable files | ||
| e8c9cd5c | 2019-09-16 15:36:02 | Fix Schema determinism check of ##other namespaces Non-compound (##local) and compound string atoms are always disjoint regardless of whether the compound atom is negated (##other). Closes #40. |