mirror of
https://github.com/openharmony/third_party_libxml2.git
synced 2026-08-24 23:31:27 -04:00
修复CVE-2023-45322漏洞
Signed-off-by: fangyunzhong <fangyunzhong2@huawei.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user