Fix CVE(s): CVE-2026-66046, CVE-2026-93990
* SECURITY UPDATE: quadratic runtime in the default-attribute lookup of storeAtts(), and an out-of-bounds read in the same lookup for parsers created by XML_ExternalEntityParserCreate() - debian/patches/CVE-2026-66046.patch: in lib/xmlparse.c, replace the linear scan over ELEMENT_TYPE.defaultAtts in storeAtts() with a lookup in the already-present defaultAttForName hash table, and make dtdCopy() create NAME_AND_DEFAULT_ATTRIBUTE-sized entries so storeAtts() no longer reads member .attIndex past the end of an entry. - CVE-2026-66046 * SECURITY UPDATE: a UTF-16 high surrogate not followed by a low surrogate was accepted, letting the high surrogate swallow the following code unit and hide it from the tokenizer - debian/patches/CVE-2026-93990.patch: in lib/xmltok.c, add LITTLE2_IS_INVALID_CHAR() / BIG2_IS_INVALID_CHAR() and wire them into IS_INVALID_CHAR() for the little2_/big2_ tokenizers, so INVALID_LEAD_CASE() in lib/xmltok_impl.c rejects a 4-byte UTF-16 character whose second code unit is not U+DC00..U+DFFF; drop the now unreachable IS_INVALID_CHAR() no-op fallback in lib/xmltok_impl.c. - CVE-2026-93990
- Products
- expat, libexpat1, libexpat1-dev
- Affected versions
- Not specified
- Fixed versions
- 2.1.0-7ubuntu0.16.04.5+tuxcare.els14
- CVEs
- CVE-2026-66046, CVE-2026-93990
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 11:39 UTC · Revision 1
Source evidence
Fix CVE(s): CVE-2026-66046, CVE-2026-93990
core-osv · Original sourcePublished 24 Sept 2026, 11:11 UTC
* SECURITY UPDATE: quadratic runtime in the default-attribute lookup of storeAtts(), and an out-of-bounds read in the same lookup for parsers created by XML_ExternalEntityParserCreate() - debian/patches/CVE-2026-66046.patch: in lib/xmlparse.c, replace the linear scan over ELEMENT_TYPE.defaultAtts in storeAtts() with a lookup in the already-present defaultAttForName hash table, and make dtdCopy() create NAME_AND_DEFAULT_ATTRIBUTE-sized entries so storeAtts() no longer reads member .attIndex past the end of an entry. - CVE-2026-66046 * SECURITY UPDATE: a UTF-16 high surrogate not followed by a low surrogate was accepted, letting the high surrogate swallow the following code unit and hide it from the tokenizer - debian/patches/CVE-2026-93990.patch: in lib/xmltok.c, add LITTLE2_IS_INVALID_CHAR() / BIG2_IS_INVALID_CHAR() and wire them into IS_INVALID_CHAR() for the little2_/big2_ tokenizers, so INVALID_LEAD_CASE() in lib/xmltok_impl.c rejects a 4-byte UTF-16 character whose second code unit is not U+DC00..U+DFFF; drop the now unreachable IS_INVALID_CHAR() no-op fallback in lib/xmltok_impl.c. - CVE-2026-93990
osv:CLSA-2026-1790248267
expat
Fixed versions: 2.1.0-7ubuntu0.16.04.5+tuxcare.els14
libexpat1
Fixed versions: 2.1.0-7ubuntu0.16.04.5+tuxcare.els14
libexpat1-dev
Fixed versions: 2.1.0-7ubuntu0.16.04.5+tuxcare.els14
Complete source record
{
"id": "0d05461ffb42639cf745dda79cf1dbecf9257f995c9426b9677ae77c421be4a6",
"url": "https://osv.dev/vulnerability/CLSA-2026-1790248267",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Fix CVE(s): CVE-2026-66046, CVE-2026-93990",
"summary": "* SECURITY UPDATE: quadratic runtime in the default-attribute lookup of storeAtts(), and an out-of-bounds read in the same lookup for parsers created by XML_ExternalEntityParserCreate() - debian/patches/CVE-2026-66046.patch: in lib/xmlparse.c, replace the linear scan over ELEMENT_TYPE.defaultAtts in storeAtts() with a lookup in the already-present defaultAttForName hash table, and make dtdCopy() create NAME_AND_DEFAULT_ATTRIBUTE-sized entries so storeAtts() no longer reads member .attIndex past the end of an entry. - CVE-2026-66046 * SECURITY UPDATE: a UTF-16 high surrogate not followed by a low surrogate was accepted, letting the high surrogate swallow the following code unit and hide it from the tokenizer - debian/patches/CVE-2026-93990.patch: in lib/xmltok.c, add LITTLE2_IS_INVALID_CHAR() / BIG2_IS_INVALID_CHAR() and wire them into IS_INVALID_CHAR() for the little2_/big2_ tokenizers, so INVALID_LEAD_CASE() in lib/xmltok_impl.c rejects a 4-byte UTF-16 character whose second code unit is not U+DC00..U+DFFF; drop the now unreachable IS_INVALID_CHAR() no-op fallback in lib/xmltok_impl.c. - CVE-2026-93990",
"evidence": "osv:CLSA-2026-1790248267",
"products": [
{
"name": {
"value": "expat",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.1.0-7ubuntu0.16.04.5+tuxcare.els14",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "libexpat1",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.1.0-7ubuntu0.16.04.5+tuxcare.els14",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "libexpat1-dev",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.1.0-7ubuntu0.16.04.5+tuxcare.els14",
"evidence": "/affected/2/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CLSA-2026-1790248267",
"aliases": [
"CLSA-2026-1790248267"
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "2.1.0-7ubuntu0.16.04.5+tuxcare.els14"
}
]
}
],
"package": {
"name": "expat",
"purl": "pkg:deb/tuxcare/expat?distro=ubuntu-16.04",
"ecosystem": "TuxCare:Ubuntu:16.04"
},
"database_specific": {
"source": "https://github.com/cloudlinux/tuxcare-osv/tree/main/data/els_os/ubuntu16.04els/CLSA-2026-1790248267.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "2.1.0-7ubuntu0.16.04.5+tuxcare.els14"
}
]
}
],
"package": {
"name": "libexpat1",
"purl": "pkg:deb/tuxcare/libexpat1?distro=ubuntu-16.04",
"ecosystem": "TuxCare:Ubuntu:16.04"
},
"database_specific": {
"source": "https://github.com/cloudlinux/tuxcare-osv/tree/main/data/els_os/ubuntu16.04els/CLSA-2026-1790248267.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "2.1.0-7ubuntu0.16.04.5+tuxcare.els14"
}
]
}
],
"package": {
"name": "libexpat1-dev",
"purl": "pkg:deb/tuxcare/libexpat1-dev?distro=ubuntu-16.04",
"ecosystem": "TuxCare:Ubuntu:16.04"
},
"database_specific": {
"source": "https://github.com/cloudlinux/tuxcare-osv/tree/main/data/els_os/ubuntu16.04els/CLSA-2026-1790248267.json"
}
}
],
"modified": "2026-10-26T09:32:02.167836224Z",
"provider": "osv",
"upstream": [
"CVE-2026-66046",
"CVE-2026-93990"
],
"references": [
"https://errata.tuxcare.com/els_os/ubuntu16.04els/CLSA-2026-1790248267.html",
"https://nvd.nist.gov/vuln/detail/CVE-2026-66046",
"https://nvd.nist.gov/vuln/detail/CVE-2026-93990"
]
},
"related_cves": [
{
"value": "CVE-2026-66046",
"evidence": "/upstream"
},
{
"value": "CVE-2026-93990",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 449427,
"published_at": "2026-09-24T11:11:19+00:00"
}