diff --git a/system/base/libxml2/files/libxml2-2.11.5-CVE-2023-45322.patch b/system/base/libxml2/files/libxml2-2.11.5-CVE-2023-45322.patch new file mode 100644 index 00000000..190218be --- /dev/null +++ b/system/base/libxml2/files/libxml2-2.11.5-CVE-2023-45322.patch @@ -0,0 +1,71 @@ +https://gitlab.gnome.org/GNOME/libxml2/-/issues/583 +https://gitlab.gnome.org/GNOME/libxml2/-/commit/d39f78069dff496ec865c73aa44d7110e429bce9 +https://bugs.gentoo.org/915351 + +From d39f78069dff496ec865c73aa44d7110e429bce9 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Wed, 23 Aug 2023 20:24:24 +0200 +Subject: [PATCH] tree: Fix copying of DTDs + +- Don't create multiple DTD nodes. +- Fix UAF if malloc fails. +- Skip DTD nodes if tree module is disabled. + +Fixes #583. +--- a/tree.c ++++ b/tree.c +@@ -4471,29 +4471,28 @@ xmlNodePtr + xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) { + xmlNodePtr ret = NULL; + xmlNodePtr p = NULL,q; ++ xmlDtdPtr newSubset = NULL; + + while (node != NULL) { +-#ifdef LIBXML_TREE_ENABLED + if (node->type == XML_DTD_NODE ) { +- if (doc == NULL) { ++#ifdef LIBXML_TREE_ENABLED ++ if ((doc == NULL) || (doc->intSubset != NULL)) { + node = node->next; + continue; + } +- if (doc->intSubset == NULL) { +- q = (xmlNodePtr) xmlCopyDtd( (xmlDtdPtr) node ); +- if (q == NULL) goto error; +- q->doc = doc; +- q->parent = parent; +- doc->intSubset = (xmlDtdPtr) q; +- xmlAddChild(parent, q); +- } else { +- q = (xmlNodePtr) doc->intSubset; +- xmlAddChild(parent, q); +- } +- } else ++ q = (xmlNodePtr) xmlCopyDtd( (xmlDtdPtr) node ); ++ if (q == NULL) goto error; ++ q->doc = doc; ++ q->parent = parent; ++ newSubset = (xmlDtdPtr) q; ++#else ++ node = node->next; ++ continue; + #endif /* LIBXML_TREE_ENABLED */ ++ } else { + q = xmlStaticCopyNode(node, doc, parent, 1); +- if (q == NULL) goto error; ++ if (q == NULL) goto error; ++ } + if (ret == NULL) { + q->prev = NULL; + ret = p = q; +@@ -4505,6 +4504,8 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) { + } + node = node->next; + } ++ if (newSubset != NULL) ++ doc->intSubset = newSubset; + return(ret); + error: + xmlFreeNodeList(ret); +-- +GitLab diff --git a/system/base/libxml2/pspec.xml b/system/base/libxml2/pspec.xml index 94a39bbe..e393d7c8 100644 --- a/system/base/libxml2/pspec.xml +++ b/system/base/libxml2/pspec.xml @@ -12,7 +12,7 @@ library Version 2 of the library to manipulate XML files Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform). - https://download.gnome.org/sources/libxml2/2.10/libxml2-2.10.4.tar.xz + https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.5.tar.xz python-devel python3-devel @@ -21,9 +21,9 @@ readline-devel - + libxml2-2.11.5-CVE-2023-45322.patch - fedora/libxml2-2.9.8-python3-unicode-errors.patch + --> @@ -91,6 +91,13 @@ + + 2023-10-13 + 2.11.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + 2023-04-11 2.10.4