153aa9179Sopenharmony_ciFrom 0aa8652e596a20e95ed334ac65cf15e6e9ec4b3b Mon Sep 17 00:00:00 2001 253aa9179Sopenharmony_ciFrom: Nick Wellnhofer <wellnhofer@aevum.de> 353aa9179Sopenharmony_ciDate: Fri, 20 May 2022 14:54:49 +0200 453aa9179Sopenharmony_ciSubject: [PATCH 291/300] Use xmlNewDocText in xmlXIncludeCopyRange 553aa9179Sopenharmony_ci 653aa9179Sopenharmony_ciOtherwise, the initial node of the copy could be a text node with a 753aa9179Sopenharmony_ciNULL document. This results in the NULL document being propagated to 853aa9179Sopenharmony_cicopies of other nodes, losing information about the dictionary in which 953aa9179Sopenharmony_cinode data is stored, and freeing a dict-allocated string. 1053aa9179Sopenharmony_ci 1153aa9179Sopenharmony_ciSee discussion in !175. 1253aa9179Sopenharmony_ci 1353aa9179Sopenharmony_ciReference:https://github.com/GNOME/libxml2/commit/0aa8652e596a20e95ed334ac65cf15e6e9ec4b3b 1453aa9179Sopenharmony_ciConflict:NA 1553aa9179Sopenharmony_ci 1653aa9179Sopenharmony_ci--- 1753aa9179Sopenharmony_ci xinclude.c | 8 ++++---- 1853aa9179Sopenharmony_ci 1 file changed, 4 insertions(+), 4 deletions(-) 1953aa9179Sopenharmony_ci 2053aa9179Sopenharmony_cidiff --git a/xinclude.c b/xinclude.c 2153aa9179Sopenharmony_ciindex e5fdf0f..8c14a68 100644 2253aa9179Sopenharmony_ci--- a/xinclude.c 2353aa9179Sopenharmony_ci+++ b/xinclude.c 2453aa9179Sopenharmony_ci@@ -987,7 +987,7 @@ xmlXIncludeCopyRange(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target, 2553aa9179Sopenharmony_ci int len; 2653aa9179Sopenharmony_ci 2753aa9179Sopenharmony_ci if (content == NULL) { 2853aa9179Sopenharmony_ci- tmp = xmlNewTextLen(NULL, 0); 2953aa9179Sopenharmony_ci+ tmp = xmlNewDocTextLen(target, NULL, 0); 3053aa9179Sopenharmony_ci } else { 3153aa9179Sopenharmony_ci len = index2; 3253aa9179Sopenharmony_ci if ((cur == start) && (index1 > 1)) { 3353aa9179Sopenharmony_ci@@ -996,7 +996,7 @@ xmlXIncludeCopyRange(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target, 3453aa9179Sopenharmony_ci } else { 3553aa9179Sopenharmony_ci len = index2; 3653aa9179Sopenharmony_ci } 3753aa9179Sopenharmony_ci- tmp = xmlNewTextLen(content, len); 3853aa9179Sopenharmony_ci+ tmp = xmlNewDocTextLen(target, content, len); 3953aa9179Sopenharmony_ci } 4053aa9179Sopenharmony_ci /* single sub text node selection */ 4153aa9179Sopenharmony_ci if (list == NULL) 4253aa9179Sopenharmony_ci@@ -1047,13 +1047,13 @@ xmlXIncludeCopyRange(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target, 4353aa9179Sopenharmony_ci const xmlChar *content = cur->content; 4453aa9179Sopenharmony_ci 4553aa9179Sopenharmony_ci if (content == NULL) { 4653aa9179Sopenharmony_ci- tmp = xmlNewTextLen(NULL, 0); 4753aa9179Sopenharmony_ci+ tmp = xmlNewDocTextLen(target, NULL, 0); 4853aa9179Sopenharmony_ci } else { 4953aa9179Sopenharmony_ci if (index1 > 1) { 5053aa9179Sopenharmony_ci content += (index1 - 1); 5153aa9179Sopenharmony_ci index1 = 0; 5253aa9179Sopenharmony_ci } 5353aa9179Sopenharmony_ci- tmp = xmlNewText(content); 5453aa9179Sopenharmony_ci+ tmp = xmlNewDocText(target, content); 5553aa9179Sopenharmony_ci } 5653aa9179Sopenharmony_ci last = list = tmp; 5753aa9179Sopenharmony_ci listParent = cur->parent; 5853aa9179Sopenharmony_ci-- 5953aa9179Sopenharmony_ci2.27.0 6053aa9179Sopenharmony_ci 61