Table of Contents
DIXml: Version History
DIXml v6.00.1 – 29 Oct 2022
Update libxml2 to version v2.10.3:
- Fix dict corruption caused by entity reference cycles.
- Fix integer overflows with XML_PARSE_HUGE
- Fix overflow check in SAX2.
Update libxslt to version v1.1.37:
- Minor improvements.
DIXml v6.00.0 – 8 Sep 2022
Update libxml2 to version v2.10.2:
- Improvements:
- Fix
xmlCtxtReadDoc
with encoding. - Add schematron let variable tag and value-of tag support.
- Implement
xpath1()
XPointer scheme. - Make copying nodes non-recursive.
- Code cleanups and simplifications.
- Security Fixes:
- Reserve byte for #0 terminator and report errors consistently in
xmlBuf
andxmlBuffer
- Fix missing #0 terminators in
xmlBuf
andxmlBuffer
functions. - Fix
xmlBufAvail
so it returns length without including a byte for #0 terminator. - Fix ownership of
xmlNodePtr
andxmlAttrPtr
fields inxmlSetTreeDoc
. - Fix use-after-free bugs when calling
xmlTextReaderClose
before ]]xmlFreeTextReader]] on post-validating parser.
- Bug fixes:
- Fix HTML parsing to skip incorrectly opened comments.
- Restore behavior of
htmlDocContentDumpFormatOutput
to it preservesxmlDoc.Type_
. - Fix memory leak with invalid XSD.
- Make XPath depth check work with recursive invocations.
- Avoid double-free if malloc fails in internal
inputPush
. - XSD schema validation: Properly fold whitespace around the QName value. Also add whitespace folding for some atomic data types that it is missing on.
- Removed and deprecated:
- Remove unused
xmlBuf
functions. - Deprecate module initialization and cleanup functions.
- Deprecate legacy functions.
- Deprecate all
xmlNanoFTP…
functions.
Update libxslt to version v1.1.36:
- Fix quadratic behavior with variables and parameters.
DIXml v5.21.0 – 6 May 2022
Update libxml2 to version v2.9.14:
- Improvements:
- Fix recovery from invalid HTML start tags: Only try to parse a start tag if there is a
<
followed by an ASCII letter. This is more in line with HTML5 and the old behavior in recovery mode. Emit a literal<
if the following character is invalid. - XPath functions
ceiling()
andfloor()
handle INF, NAN, and -0.0.
- Security Fixes:
- Integer overflow in
xmlBuf
andxmlBuffer
. - Integer overflow skipping blank characters during parsing.
- Normalize XPath strings in-place.
- Fix memory leaks and potential double free.
- Other Fixes:
- Fix parsing of subtracted regex character classes.
- Fix certain combinations of regex range quantifiers.
- Fix range quantifier on subregex.
- Detect local inclusions to fix recursions in
xi:include
. - Reset last error in
xmlCleanupGlobals
.
DIXml v5.20.0 – 8 Mar 2022
Update libxml2 to version v2.9.13:
- Regression fixes:
- RelaxNG pattern matching.
- Nested documents in xmlFreeNode.
- PEs in external DTD.
- Random dropping of characters on dumping ASCII encoded XML.
- Parsing invalid HTML tags in push mode.
- Parsing public IDs literals in HTML.
- Buffering in
xmlOutputBufferWrite
. - Whitespace when serializing empty HTML documents.
- XPath recursion limit.
- Bug fixes:
xmlSetTreeDoc
with entity references.- Double counting of CRLF in comments
- XML parser input buffer growth.
- Do not normalize namespace URIs in XPointer
xmlns()
scheme. - Handling of XSD with empty namespace.
- Parse failure when 4-byte character in UTF-16 BE is split across a chunk.
- Memory leak, null pointer dereference and use-after-free fixes.
Update libxslt to version v1.1.35:
- Fix performance regression with predicates in patterns.
- Fix regression in xsltComputeSortResult.
- Fix conflict resolution for templates with same priority.
- Fix xsl:number generating invalid UTF-8.
- Support attribute value templates in xsl:sort lang attributes.
- Do not pass first
<xsl:sort>
in<xsl:apply-templates>
twice. - Fix quadratic runtime with text and
<xsl:message>
. - Do not allow empty EXSLT durations.
- Memory leak, double-free and use-after-free fixes.
DIXml 5.19.0 – 16 Sep 2021
- Support Delphi 11 Alexandria Win32 and Win64.
DIXml 5.18.0 – 15 Jul 2021
Update libxml2 to version v2.9.12:
- New
xmlPopOutputCallbacks
. - Fix quadratic runtime in HTML push parser.
- Fix UTF-8 decoder in HTML parser.
- Over 100 smaller bug fixes like:
- integer overflows,
- memory leaks,
- error propagations and return values,
- memory use after free,
- quadratic / exponential runtime behaviours,
- nil pointer dereferences,
- UTF-8 validations.
- Nearly 100 sercurity, function, and performance improvements.
DIXml 5.17.0 – 30 Jan 2021
- Add functions and types required by YuXMLSec:
- XSLT security.
xmlAddID
,xmlFreeIDTable
,xmlGetID
,xmlIsID
,xmlRemoveID
.xmlAddRef
,xmlFreeRefTable
,xmlIsRef
,xmlRemoveRef
,xmlGetRefs
.xmlXPathErr
.
DIXml 5.16.0 – 5 Jun 2020
- Support Delphi 10.4 Sydney Win32 and Win64.
DIXml 5.15.0 – 13 Nov 2019
XML:
- Optional recursion limit when parsing XPath expressions. Useful to avoid stack overflows. Note that parsing a parenthesized expression currently consumes more than 10 stack frames, so this limit should be set rather low.
- Improve XPath predicate and filter evaluation as well as error propagation, particularly out of memory conditions.
- Fix that the parser did not stop immediately after a 'Double hyphen within comment' error.
- Fix return value of
xmlOutputBufferWrite
. With memory buffers, the total size of the buffer was added again and again, potentially leading to an integer overflow. - Fix schema validation related to
##other
namespace. - Disallow conditional sections in internal subsets. Conditional sections are only allowed in external parameter entities referenced from the internal subset.
- Fix a number of memory leaks, invalid pointer dereferences, integer overflows, and uninitialized memory accesses.
- Avoid potential stack overflows by making some functions non-recursive.
XSLT:
- Do not allow
xsl:template
without name and match attributes. - Fix performance regression with
xsl:number
. - Fix a number of memory leaks, integer overflows, invalid pointer dereferences, dangling pointers, and error propagations.
- Avoid potential stack overflows by making some functions non-recursive.
DIXml 5.14.0 – 7 Mar 2019
- Adjust
DIXmlConverters
to DIConverters 1.18.0 changes.
XML Bug Fixes:
- Fix: If the XPath stack was corrupted, for example by a misbehaving extension function, the “and” and “or” XPath operators could dereference nil pointers.
- Fix building relative URIs.
- Fix problem with data in interleave in RelaxNG validation.
- Fix memory leak when switching the input encoding results in an error.
- Fix SAX2 memory leak of nodes in the freelist.
- Fix HTML serialization with UTF-8 encoding.
- Use actual doc in xmlTextReaderRead*Xml.
- Unlink node before freeing it in xmlSAX2StartElement.
- Check return value of nodePush in xmlSAX2StartElement.
- Free input buffer in xmlHaltParser.
- Reset HTML parser input pointers on encoding failure.
- Fix xmlSchemaValidCtxtPtr reuse memory leak.
- Fix xmlTextReaderNext with preparsed document.
- HTML noscript should not close p.
- Don't change context node in xmlXPathRoot.
- Stop using XPATH_OP_RESET.
- Fix xmlParserEntityCheck.
- Halt parser in case of encoding error.
- Clear entity content in case of errors.
- Fix buffer over-read in xmlParseNCNameComplex.
- Fix IO callback signatures.
- Fix misc callback signatures.
- Fix list callback signatures.
XML Improvements:
- Fix problem with data in interleave in RelaxNG validation.
- Remove redefined starts and defines inside include elements.
- Allow choice within choice in nameClass in RELAX NG.
- Look inside divs for starts and defines inside include.
- Support xmlTextReaderNextSibling w/o preparsed doc.
- Improve restoring of context size and position.
- Simplify and harden nodeset filtering.
- Avoid unnecessary backups of the context node.
- Fix inconsistency in xmlXPathIsInf.
- Improve handling of context input_id.
XSLT Bug Fixes:
- Fix transform callback signatures.
- Fix extension callback signatures.
- Fix deallocator signatures.
- Fix XPath callback signatures.
- Fix hash callback signatures.
- Don't cache direct evaluation of patterns with variables.
- Move function result RVTs to context variable.
- Fix EXSLT functions returning RVTs from outer scopes.
- Fix handling of RVTs returned from nested EXSLT functions.
DIXml 5.13.0 – 24 Dec 2018
- Support Delphi 10.3 Rio Win32 and Win64.
DIXml 5.12.0 – 22 Nov 2017
XML Security:
- Detect infinite recursion in parameter entities.
- Fix handling of parameter-entity references.
- Disallow namespace nodes in XPointer ranges.
- Fix XPointer paths beginning with range-to.
XML Bug Fixes:
- xmlcatalog: restore ability to query system catalog easily.
- Fix comparison of nodesets to strings.
- Fix XPath stack frame logic.
- Report undefined XPath variable error message.
- Handle more invalid entity values in recovery mode.
- Fix structured validation errors.
- Handle illegal entity values in recovery mode.
- Fix memory leak in nanoftp.
- Fix memory leaks in SAX1 parser.
- Problem resolving relative URIs.
- Fix unwanted warnings when switching encodings.
- Heap-buffer-overflow read of size 1 parsing regular expression character ranges.
- Fix NULL pointer deref in parsing regular expression character escapes.
- Fix infinite loops with push parser in recovery mode.
- Fix NULL deref parsing external character entities.
- Make sure not to call IS_BLANK_CH when parsing the DTD.
- Fix pathological performance when outputting charrefs.
- Fix duplicate SAX callbacks for entity content.
- Treat URIs with scheme as absolute in C14N.
- Fix copy-paste errors in error messages.
- Fix sanity check parsing HTML names.
- Fix potential infinite loop in
xmlStringLenDecodeEntities
. - Reset parser input pointers on encoding failure.
- Fix memory leak in
xmlParseEntityDecl
error path. - Fix
xmlBuildRelativeURI
for URIs starting with './'. - Fix type confusion in
xmlValidateOneNamespace
. - Fix memory leak in
xmlStringLenGetNodeList
. - Fix NULL pointer deref dumping element content.
- Fix memory leak in
xmlBufAttrSerializeTxtContent
. - Stop parser on unsupported encodings.
- Check for integer overflow in memory debug code.
- Fix buffer size checks in
xmlSnprintfElementContent
. - Avoid reparsing in when parsing start tags.
- Fix regular expression undefined behavior.
- Check XPath exponents for overflow.
- Check XPath prosition predicate for overflow.
- Fix spurious error message.
- Fix memory leak in
xmlCanonicPath
. - Fix memory leak comparing node set values.
- Fix memory leak in pattern error path.
- Fix memory leak in parser error path.
- Fix memory leaks in XPointer error paths.
- Fix memory leak merging node sets.
- Fix memory leak in XPath filter optimizations.
- Fix memory leaks in XPath error paths.
- Do not leak the new CData node if adding fails.
- Prevent unwanted external entity reference.
- Increase buffer space for port in HTTP redirect support.
- Fix format string warnings.
- Disallow namespace nodes in XPointer points.
- Fix comparison with root node in
xmlXPathCmpNodes
. - Fix attribute decoding during XML schema validation.
- Fix NULL pointer deref in XPointer range-to.
XML Improvements:
- Add const in five places to move 1 KiB to .rdata.
- Get rid of “blanks wrapper” for parameter entities.
- Simplify handling of parameter entity references.
- Make HTML parser functions take const pointers.
- Rework entity boundary checks.
- Don't switch encoding for internal parameter entities.
- Initialize keepBlanks in HTML parser.
- Remove useless check in
xmlParseAttributeListDecl
. - Allow zero sized memory input buffers.
- Check for integer overflow converting numbers to string representations.
- Simplify control flow parsing XML start tags.
- Parse small XPath numbers more accurately.
- Rework XPath rounding functions.
- Fix axis traversal from attribute and namespace nodes.
- Check for trailing characters in XPath expressions earlier.
- Rework final handling of XPath results.
- Make
xmlXPathEvalExpression
callxmlXPathEval
.
XSLT Bug Fixes:
- Fix NULL deref in
xsltDefaultSortFunction
. - Fix memory hazards in EXSLT function evaluation.
- Fix memory leaks in EXSLT error paths.
- Fix memory leak in str:concat with empty node-set.
- Fix memory leaks in error paths.
- Fix NULL pointer deref in XSLT format number function.
- Fix UTF-8 check in str:padding.
- Check for overflow parsing year without time zone.
- Fix double to int conversion.
- Check for overflow parsing duration strings.
- Disable
xsltCopyTextString
optimization for extensions. - Create DOCTYPE for HTML version 5.
- Make xsl:decimal-format work with namespaces.
- Remove the norm:localTime extension function. It was non-standard, undocumented and used a custom date format.
- Check for integer overflow adding text to text nodes.
- Detect infinite recursion when evaluating function arguments.
- Fix memory leak in the the element-available() XSLT function.
- Fix for pattern predicates calling functions.
- Fix heap overread in in the format-number() XSLT function.
- Fix
<xsl:number level=“any”/>
for non-element nodes. - Fix unreachable code adding a child node.
- Change version number in xsl:version warning.
- Avoid infinite recursion after failed param evaluation.
- Stop if potential recursion is detected.
- Consider built-in templates in apply-imports.
- Fix precedence with multiple attribute sets.
- Rework attribute set resolution.
XSLT Improvements:
- New-line terminate error message that missed this convention.
- Use xmlBuffers in EXSLT string functions.
- Switch to
xmlUTF8Strsize
in EXSLT string functions. - Check for return value of
xmlUTF8Strlen
. - Avoid double/long round trip formating an item number.
- Separate date and duration structs.
- Check for overflow in calculating date differences.
- Clamp seconds field of durations.
- Fix date:difference with time zones.
- Change internal representation of years.
- Optimize leap year calculation.
- Make some symbols static.
- Remove redundant NULL check in XSLT number node processing.
- Fix forwards compatibility for imported stylesheets.
- Reduce warnings in forwards-compatible mode.
- Precompute XSLT elements after preprocessing.
- Fix whitespace scanning the top level elements of an XSL stylesheet.
- Consolidate recursion checks.
- Treat
XSLT_STATE_STOPPED
as errors. - Make sure that
XSLT_STATE_STOPPED
isn't overwritten. - Rewrite memory management of local RVTs.
- Validate QNames of attribute sets.
- Ignore imported stylesheets when applying xsl:use-attribute-sets.
DIXml 5.11.0 – 3 Apr 2017
- Support Delphi 10.2 Tokyo Win32 and Win64.
DIXml 5.10.0 – 10 Jun 2016
XML Bug Fixes:
- More format string warnings with possible format string vulnerability.
- Avoid building recursive entities.
- Fix buffer overreads, underreads, and use after free.
- Detect change of encoding when parsing HTML names.
- Fix inappropriate fetch of entities content.
- Avoid an out of bound access when serializing malformed strings.
- Integer overflow parsing port number in URI.
- Fix error with regexp on nullable counted char transition.
- Fix memory leak with XPath namespace nodes.
- Fix namespace axis traversal.
- Fix nil pointer dereference in documents with no root element.
- Fix XSD validation of URIs with ampersands.
- Fix namespace::node() XPath expression.
- Fix parsing of NCNames in XPath.
- Normalize string-based datatype value in RelaxNG facet checking.
XSLT Bug Fixes:
- date:add(): Keep timezone & fix buffer overflow.
- Fix saxon:line-number() with namespace nodes.
- Fix dyn:map() with namespace nodes.
- Fix error handling in Saxon extension functions.
- Fix double free in hash functions.
- Fix multiple possible nil pointer dereferences.
- Detect attribute sets recursions in more cases.
- Check name vales for attribute-set elements to avoid an indefinite loop.
XSLT Improvements:
- Fix xsl:number() lower and upper bound for format token “i”.
- Fix xsl:number() lower bound for format token “a”.
- Handle negative xsl:number() values.
- Round xsl:number() values to nearest integer.
- Allow {URI}NCName syntax for user parameters.
- Fix error messages for unsupported methods.
DIXml 5.9.0 – 7 May 2016
- Support Delphi 10.1 Berlin Win32 and Win64.
DIXml 5.8.0 – 9 Mar 2016
XML Security Fixes:
- Prevent buffer overead with HTML parser in push mode.
- Fix memory access error due to incorrect entities boundaries.
- Avoid internal state error when growing the parser buffer.
- Use a common function to stop the parser on error more consistently.
- Fix an entity expansion issue.
- Avoid heap buffer overflow.
- Avoid processing entities after encoding conversion failures.
- Enforce the reader to run in constant memory.
- Cleanup conditional section error handling.
- Stop parsing on entities boundaries errors.
XML Bug Fixes:
- Bug on creating new stream from entity.
- Do not print error context when there is none.
- Avoid extra processing of MarkupDecl when EOF.
- Fix parsing short unclosed comment uninitialized access.
- Add missing Null check.
- Fix a bug in CData error handling in the push parser.
- Fix a bug on name parsing at the end of current input buffer.
- Fix the spurious ID already defined error.
- Fix previous change to node sort order.
- Fix a self assignment issue.
- Fail parsing early on if encoding conversion failed.
- Do not process encoding values if the declaration if broken.
- Make
xmlMemUsed
andxmlMemBlocks
thread-safe. - Fix support for except in nameclasses.
- Fix order of root nodes.
- Allow attributes on descendant-or-self axis.
- Fix timsort invariant loop re: Envisage article.
- Remove various unused value assignments.
- Revert “Missing initialization for the catalog module”.
XML Improvements:
- Recover unescaped less-than character in HTML recovery parsing.
- Allow HTML serializer to output HTML5 DOCTYPE.
XSLT Bug Fixes:
- Properly initialize EXSLT month and day to 1.
- Fix various potential nil-pointer dereferences.
- Fix
xsltNumberFormat
memory leak. - Check that a parent node is an element before dereferencing its namespace to fix type confusion in preprocessing attributes.
- Check name vales for attribute-set elements and recursion.
XSLT Improvements:
- Use hash table to look up named templates. For big XSLTs (>50000 templates), this results in a huge improvement of the compilation time.
DIXml 5.7.2 – 15 Sep 2015
- Support Delphi 10 Seattle Win32 and Win64.
DIXml 5.7.1 – 25 Apr 2015
- Add support for Delphi XE8 Win32 and Win64.
DIXml 5.7.0 – 6 Nov 2014
- Support element node traversal in document fragments.
- Add missing NULL checks that could cause an AV if a pointer was dereferenced.
- Correct structured error column when skipping white space and parsing attribute values & end tags.
- Fix a problem properly saving URIs.
- Fix Enum check and missing break.
- Fix possible HTML parser overflow reading the document encoding.
- Fix memory leak in
xmlNanoFTPConnect
. - Fix parser bug on misformed namespace attributes.
- Fix parser error on repeated recursive entity expansion containing
<
. - Correctly release Windows Critical sections in
xmlRMutexLock
andxmlRMutexUnlock
. - Fix parser memory leak xml reading an encoding header field with
XML_PARSE_IGNORE_ENC
. - Fix XSLT
str:align
with UTF-8 strings.
DIXml 5.6.0 – 3 Oct 2014
- Support Delphi XE7 Win32 and Win64.
DIXml 5.5.1 – 4 Aug 2014
- Backward incompatibility change: Remove the EXSLT
str:replace()
function. It is broken and can not be fixed with the current design of the library. - Add EXSLT math functions
math:abs()
,math:sqrt()
,math:power()
,math:log()
,math:sin()
,math:cos()
,math:tan()
,math:asin()
,math:acos()
,math:atan()
,math:atan2()
,math:exp()
. - Fix nearly 100 bugs in XML, XSLT and EXSLT.
- Documentation improvements.
DIXml 5.5.0 – 28 Apr 2014
- Support Delphi XE6 Win32 and Win64.
- Mark
xmlXPathEvalExpression
as deprecated in favor ofxmlXPathEval
. - Add XPath to DIXml_Canonicalization demo.
- Improve XPath documentation.
DIXml 5.0.1 – 7 Apr 2014
- Fix interface of
xmlC14NDocSaveTo
,xmlC14NDocDumpMemory
,xmlC14NDocSave
, andxmlC14NExecute
. They all usedxmlCharPtr
wherexmlChar_ptr_array_ptr
was required. - Fix interface of
htmlNodeDumpOutput
andhtmlNodeDumpFormatOutput
. They both usedxmlDocPtr
wherexmlNodePtr
was required. - New
DIXmlUtils
unit with various utility functions. - Add new DIXml_Canonicalization demo.
- Largely extend and improve documentation.
DIXml 5.0.0 – 25 Sep 2013
- Support Delphi XE5 Win32 and Win64.
DIXml 4.5.0 – 14 Jun 2013
- Support Delphi XE4 Win32 and Win64.
DIXml 4.0.2 – 23 Apr 2013
- Add
xmlXPathSetContextNode
andxmlXPathNodeEval
. They make it easier to evaluate XPath expressions with a context node other than the document root without poking about inside the internals of the context. - Do not URI escape server side includes when dumping an HTML attribute.
- Fix an error in
xmlCleanupParser
. - Improve the hashing functions.
- Improve handling of
xmlStopParser
: AddXML_ERR_USER_STOP
error code and try to stop parsing as quickly as possible. - Remove risk of lockup if
xmlInitializeDict
was called by two threads concurrently. Initialization is now automatic andxmlInitializeDict
deprecated. - Activate detection of encoding in external subset.
- Fix an output buffer flushing conversion bug.
- Fix an old bug in
xmlSchemaValidateOneElement
. - Fix schema validation in combination with xsi:nil.
xmlCtxtReadFile
now works with literal IPv6 URLs.- Detect excessive entities expansion upon replacement. If entities expansion in the XML parser is asked for, it is possble to craft relatively small input document leading to excessive on-the-fly content generation. Now account for those replacement and stop parsing after a given threshold. It can be bypassed as usual with the
XML_PARSE_HUGE
parser option. - Fix the flushing out of raw buffers on encoding conversions.
- Fix some buffer conversion issues.
- When calling
xmlNodeDump
make sure the buffer grows quickly using a double-it scheme. - Try IBM-037 when looking for EBCDIC character encoding handlers.
- Fix potential out of bound access parsing attribute values.
- Fix large parse of file from memory.
- Fix a bug in the
XML_PARSE_NSCLEAN
option of the parser. - Fix a regression breaking validation while streaming.
- Cache presence of '<' in entities content.
- Avoid extra processing on entities: If an entity has already been checked for correctness do not check it again on every reference.
DIXml 4.0.1 – 14 Dec 2012
XML Bug Fixes
- Fix a regression in breaking validation while streaming.
- Fix a bug in the nsclean option of the parser.
- Fix large parse of file from memory.
- Fix potential parser out of bound access.
- Try IBM-037 when looking for EBCDIC handlers.
XSLT Bug Fixes
- Fix generate-id() to avoid generating the same ID.
- Fix crash with empty xsl:key/@match attribute.
- Crash when passing an uninitialized variable to document().
- Fix regression: Default namespace not correctly used.
DIXml 4.0.0 – 4 Oct 2012
- Support Delphi XE3 Win32 and Win64.
XML New Features
- A few new API entry points,
- More resilient push parser mode.
- Faster XPath evaluation
XML Improvements
- Allow to set the quoting character of an
xmlTextWriter
. - Keep non-significant blanks node in HTML parser.
- Add a forbidden variable error number and message to XPath.
- Support long path names on WNT.
- Improve HTML escaping of attribute on output.
- Switching XPath node sorting to Timsort.
- Optimizing '//' in XPath expressions.
- Expose
xmlBufShrink
in the public tree API. - Visible HTML elements close the head tag.
- Fix file and line report for XSD SAX and reader streaming validation.
- Fix const qualifyer to definition of xmlBufferDetach.
- Add support for big line numbers in error reporting.
- Deprecate
xmlBuffer
for serialization and use the newxmlBuf
instead. - Improve compatibility between
xmlBuf
andxmlBuffer
. - New
xmlOutputBuffer
accessorsxmlOutputBufferGetContent
andxmlOutputBufferGetSize
. - Improvements for old buffer compatibility.
- Improve error reporting on parser errors.
- Implement some default limits in the XPath module.
- Introduce some default parser limits.
- Cleanups and new limit APIs for dictionaries.
- Cleanup URI module memory allocation code.
- Impose a reasonable limit on PI size.
- Avoid quadratic behaviour in some push parsing cases.
- Impose a reasonable limit on comment size.
- Impose a reasonable limit on attribute size.
- Cleanup function
xmlBufResetInput
. xmlTextReader
bails too quickly on error.- Use a hybrid allocation scheme in
xmlNodeSetContent
. - Use buffers when constructing string node lists.
- Add HTML parser support for HTML5 meta charset encoding declaration.
- Wrong message for double hyphen in comment XML error.
- Add function
xmlTextReaderRelaxNGValidateCtxt
. - Add hash randomization to hash and dict structures.
- Improve the error report on undefined REFs.
- Add exception for new W3C PI xml-model.
- Add options to ignore the internal encoding.
XML Bug Fixes
- Change the XPath code to percolate allocation errors.
- Fix reuse of
xmlInitParser
. - Fix potential crash on entities errors.
- Fix the XPath arity check to also check the XPath stack limits.
- Fix problem with specific and generic error handlers.
- Avoid a potential infinite recursion.
- Fix an XSD error when generating internal automata.
- Patch for xinclude of text using multibyte characters.
- Fix a segfault on XSD validation on pattern error.
- Add a missing element check.
- Adding various checks on node type though the API.
- Namespace nodes can't be unlinked with
xmlUnlinkNode
. - Fix make dist to include new private header files.
- More fixups on the push parser behaviour.
- Strengthen behaviour of the push parser in problematic situations.
- Enforce
XML_PARSER_EOF
state handling through the parser. - Fixup limits parser.
- Do not fetch external parsed entities.
- Fix entities local buffers size problems.
- Fix parser local buffers size problems.
- Fix a failure to report xmlreader parsing failures.
- Fix a race in
xmlNewInputStream
. - Fix weird streaming RelaxNG errors.
- HTML parser error with
<noscript>
in the<head>
. - XSD: optional element in complex type extension.
- Fix HTML serialization error and
htmlSetMetaEncoding
. - xinclude with parse=“text” does not use the entity loader.
- Allow to parse 1 byte HTML files.
- Patch that fixes the skipping of the
HTML_PARSE_NOIMPLIED
flag. - Avoid memory leak if
xmlParserInputBufferCreateIO
fails. - Prevent an infinite loop when dumping a node with encoding problems.
- HTML element position is not detected propperly.
- Fix a problem with entities in SAX mode.
- Fix SAX2 builder in case of undefined attributes namespace.
- Fix SAX2 builder in case of undefined element namespaces.
- Fix a pair of possible out of array char references.
- Fix an allocation error when copying entities.
- Make sure the parser returns when getting a Stop order.
- Fix some potential problems on reallocation failures.
- Fix a schema type duration comparison overflow.
- Fix an unimplemented part in RNG value validation.
- Fix missing error status in XPath evaluation and harden XPath evaluation.
- Fix an off by one error in encoding.
- Fix RELAX NG include bug.
- Fix XSD validation bug..
- Fix some potential problems on reallocation failures.
- Fix use of the structured callback channel and its data initialization.
- Fix memory corruption when parsing a balanced chunk.
- Fix a potential freeing error in XPath.
- Fix a potential memory access error.
XSLT Improvements
- Add the saxon:systemId extension.
- Add an append mode to document output.
- Allow per-context override of
xsltMaxDepth
, introducexsltMaxVars
. - Precompile patterns in xsl:number.
XSLT Bug fixes
- Report errors on variable use in key.
- Fix handling of names in xsl:attribute.
- Reserved namespaces in xsl:element and xsl:attribute.
- Null-terminate result string of cry:rc4_decrypt.
- EXSLT date normalization fix.
- Exit after compilation of invalid func:result.
- Fix for EXSLT func:function.
- Rewrite EXSLT string:replace to be conformant.
- Avoid a heap use after free error.
- Fix a dictionary string usage.
- Output should not include extraneous newlines when indent is off.
- document('') fails to return stylesheets parsed from memory.
- Forwards-compatible processing of unknown top level elements.
- Fix system-property with unknown namespace.
- Hardening of code checking node types in EXSLT.
- Hardening of code checking node types in various entry point.
- Fix default template processing on namespace nodes.
- Fix a bug in selecting XSLT elements.
- Fix some case of pattern parsing errors.
- Fix a memory leak with xsl:number.
- Fix a problem with ESXLT date:add.
- Fix a memory leak if compiled with Windows locale support.
- Fix generate-id.
- Fix curlies support in literals for non-compiled AVTs.
- Allow whitespace in xsl:variable with select.
- Small fixes to locale code.
- Fix popping of vars.
- Fix direct pattern matching bug.
DIXml 3.1.0 – 22 Dec 2011
- Support Delphi XE2 Win64.
DIXml 3.0.0 – 15 Oct 2011
- Support Delphi XE2 Win32.
- Enable XSLT debugger (
xsltSetDebuggerStatus
,xsltSetDebuggerCallbacks
): See DIXml_XSLT_Tutorial demo for an example implementation.
DIXml 2.2.1 – 3 Mar 2011
- Enable locale support so that Windows API string comparison functions may be used for XSLT sorting if available.
- Various XSLT fixes and improvements.
- Add an HTML parser option to avoid a default doctype.
- Disable an over-optimization which caused an AV when processing floating point numbers.
- Fix potential memory leak in XPath
- Fix potential memory curruption in XML parser and XPath.
- Various other fixes for XPath, HTML parser, iso995 encoding, and more.
DIXml 2.2.0 – 28 Sep 2010
- Delphi XE support.
- Some additions and corrections to demos projects and help.
DIXml 2.1.2 – 27 Mar 2010
- Fix broken escape behaviour in regexp ranges.
- ChunkParser: Incorrect decoding of small xml files.
- Fixed HTML encoding detection.
- Fix encoding selection for
xmlParseInNodeContext
. - Fix
xmlPreviousElementSibling
mistake. - Fix
xmlParseInNodeContext
for HTML content. - Fix lost namespace when copying node.
- Recognize ID attribute in HTML without DOCTYPE.
- Fix memory leak in
xmlXPathEvalExpression
. - Don't give default HTML boolean attribute values in parser.
xmlCtxtResetLastError
should reset ctxt-errNo.- Completely revised the help generator to ease navigation and improve readability. Send your feedback!
DIXml 2.1.1 – 16 Oct 2009
- Switch parser to XML-1.0 5th edition, add parsing flag
XML_PARSE_OLD10
for old versions. - Switch URI parsing to RFC 3986.
- Improve handling of misplaced html/head/body in HTML parser.
- Improve xmlSave…() functions to handle HTML documents and trees.
- Performance improvements, for example when the encoder can not serialize characters on output.
- Numerous bug fixes: Realloc problems, potential double frees, and access violations.
DIXml 2.1.0 – 12 Sep 2009
- Delphi 2010 support.
- Improvements and bug fixes to the demo projects.
DIXml 2.0.0 – 22 Nov 2008
- Delphi 2009 support.
DIXml 1.0.1 – 14 May 2008
XSLT bug fixes:
- Pattern compilation.
- Key initialization.
- Processing of top level elements of stylesheets which are not in the XSLT namespace and are not an extension either.
DIXml 1.0 – 11 Apr 2008
- Fix several bugs and potential memory leaks, including a missing check in UTF-8 decoding.
- Improved HTML parsing.
- First sketch of new
DIXmlConverters
unit with additional conversion functions based on the DIConverters] library. - Better demo projects: Several problems corrected, better code documentation.
DIXml 1.0 Beta 8 – 2 Dec 2007
- Build libxml with LIBXML_THREAD_ENABLED defined.
- Add interface for thread handling.
- Add interface for global variables and thread handling of those variables.
DIXml 1.0 Beta 7 – 20 Nov 2007
- Add XSLT documents and variables APIs.
- Further API improvements, fixes, and documentations.
- Add to all demo projects proper initialize and finalize code for global XML and XSLT variables.
- Add character encoding options to DIXml_XSLT_Browser demo.
- New DIXml_xmlOuputBuffer_WideString demo project to demonstrate how to use the xmlOutputBuffer API interface to serialize an XML document straight into a Delphi WideString.
- New DIXml_XSLT_WideString demo project to show XSLT transformation with optimized WideString document loading and saving.
DIXml 1.0 Beta 6 – 6 Nov 2007
- Do not crash xmlMemFree() when passing a nil pointer.
- Fix XML saving to avoid a crash when dumping an attribute from an XHTML document.
- Enhance nanohttp to include port number (if not = 80) on the “Header:” URL
- Fix a regular expression range bug and correct a typo which resulted in a warning.
- Fix EXSLT extension week-in-year result which did not conform to the specification.
- Remove some unused code. This slightly decreases the library size.
- Add schema validation demo based on xmlTextReader.
DIXml 1.0 Beta 5 – 29 Oct 2007
- Fix internal library string to floating point conversion which surfaced when testing the XML schema validation.
DIXml 1.0 Beta 4 – 29 Oct 2007
- Add XML schema validation interfaces and demo.
DIXml 1.0 Beta 3 – 6 Sep 2007
- XML fixes (libxml 2.6.30):
- Windows path handling.
- xmlXPathNodeSetSort problem.
- leak when reusing a writer for a new document.
- Schemas xsi:nil handling patch.
- relative URI build problem.
- crash in xmlDocFormatDump.
- invalid char in comment detection bug.
- disparity with
xmlSAXUserParseMemory
. - automata generation for complex regexp counts problems.
- Schemas IDC import problems.
- xpath predicate evailation error handling.
- XSLT fixes (libxslt 1.1.22):
- RVT cleanup problems
- exclude-result-prefix bug
- stylesheet compilation error handling
- Interface the global variables xmlTreeIndentString and xmlSaveNoEmptyTags.
- New NameSpace demo project.
DIXml 1.0 Beta 2 – 20 Jun 2007
- Update embedded libxml2 to version 2.6.29 and libxslt to version 1.1.21.
- Add HTTP and FTP input/output support.
- Add interface for canonicalization (xmlC14N… functions and procedures).
- Add interface for catalog (xmlCatalog… functions and procedures).
- Add interface for HTML tree output (various html… functions and procedures).
- Add interface for lists (xmlList… functions and procedures).
- Add interface for SAX (deprecated, legacy only).
- Add interface for SAX2 (xmlSAX2… functions and procedures).
- Add interface for Schematron (xmlSchematron… functions and procedures).
- Add interface for Save (xmlSave… functions and procedures).
- Add interface for XPointer (xmlXPtr … functions and procedures).
- Add interface for Unicode character classes (xmlUCSIs… functions).
- Add other interface parts, plus a few fixes.
- Fix: Unrecognized end of file could result in endless loop.
- Documentation updates.
DIXml 1.0 Beta 1 – 23 May 2007
- First public release.