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