[CLSA-2026:1792495267] alt-libxml2: Fix of 4 CVEs
Type:
security
Severity:
Moderate
Release date:
2026-10-20 11:21:18 UTC
Description:
- CVE-2023-28484: NULL pointer dereference in xmlSchemaFixupComplexType(). When a complex type extends a base type by complex content, the effective content model is built by splicing the base type's particle in front of the derived type's; the splice arm walked baseType->subtypes without checking it is non-NULL. A base declared with simpleContent has no particle, so an invalid schema combining the two crashes the parser before the diagnostic that would reject it is emitted. Affects anything parsing an untrusted .xsd, xmllint --schema included. Upstream e4f85f1b (v2.10.4) - CVE-2023-29469: non-deterministic hashing of empty dictionary strings. xmlDictComputeFastKey() guarded only `name == NULL` and so, for a zero-length non-terminated name, read name[0] past the end of the string and returned the constant 0 instead of the per-dictionary seed. Upstream states the impact as "various logic or memory errors, including double frees": an inconsistent key makes the dictionary return the wrong answer for an empty name, and callers that free on it can double free. Taking the seed into account is secondary and, upstream's words, "shouldn't have an impact on security". Guard namelen <= 0 and return the seed. Upstream 547edbf1 (v2.10.4) - CVE-2024-34459: buffer over-read in xmlHTMLPrintFileContext() in xmllint.c. The function backscans from input->cur twice to render the caret line under an offending token; the first scan is bounded by `cur > base`, the second is not, so a parser position at the start of the buffer preceded by newlines walks off the front and keeps reading. CLI only - the function is static to xmllint.c and runs only under --htmlout - and a read, not a write, but we ship xmllint on every platform. Upstream 3ad7f816 (v2.12.7) - CVE-2026-0990: unbounded recursion in catalog URI resolution. xmlCatalogXMLResolve() has carried a MAX_CATAL_DEPTH test and matching depth increment for the public-identifier path for years (catalog.c:1635 and 1641); the URI path had neither, so a delegateURI entry pointing back at its own catalog made xmlCatalogListXMLResolveURI() and xmlCatalogXMLResolveURI() recurse until the stack was exhausted. Add the same depth accounting, and walk a separate cursor so the decrements on the way out apply to the entry that was incremented. The separate MAX_CATAL_DEPTH test at catalog.c:1872, inside xmlCatalogXMLResolveURI(), has no matching increment on that path; it is not claimed to be unreachable in general, since xmlCatalogXMLResolve() has a non-decrementing return at 1830-1831 and parsed catalogs are cached globally. Upstream ac6f0fde (v2.15.2); 1961208e is the identical twin commit
Updated packages:
  • alt-libxml2-2.10.2-10.el7.x86_64.rpm
    sha:9d14a7571631ad1cf865398cb017a7661f373db801ac6f047db55cdaea7ea024
  • alt-libxml2-devel-2.10.2-10.el7.x86_64.rpm
    sha:857d33a01f75a64f401582f25faaa366bda674847c67da9c8eabac774201a269
  • alt-libxml2-static-2.10.2-10.el7.x86_64.rpm
    sha:eb01b01f8f4ccecfbb4e2e2e7da3bfafcf292656fdcce1dd00c623cebce581da
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.