修复CVE-2023-45322漏洞

Signed-off-by: fangyunzhong <fangyunzhong2@huawei.com>
This commit is contained in:
fangyunzhong
2023-10-19 08:16:43 +00:00
parent 5bf9edd264
commit dc828c3dd7
+19 -15
View File
@@ -4378,29 +4378,28 @@ static 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) return(NULL);
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) return(NULL);
if (q == NULL) goto error;
}
if (ret == NULL) {
q->prev = NULL;
ret = p = q;
@@ -4412,7 +4411,12 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
}
node = node->next;
}
if (newSubset != NULL)
doc->intSubset = newSubset;
return(ret);
error:
xmlFreeNodeList(ret);
return(NULL);
}
/**