Previously, if xml node passed to the virXMLNodeContentString()
was not of type XML_ELEMENT_NODE, @ret could have caused a memory
leak because xmlNodeGetContent() works for other types of nodes
as well.
Signed-off-by: Kristina Hanicova <khanicov(a)redhat.com>
---
src/util/virxml.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/util/virxml.c b/src/util/virxml.c
index 060b7530fc..4a6fe09468 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -536,7 +536,7 @@ virXMLPropStringLimit(xmlNodePtr node,
char *
virXMLNodeContentString(xmlNodePtr node)
{
- char *ret = (char *)xmlNodeGetContent(node);
+ char *ret = NULL;
if (node->type != XML_ELEMENT_NODE) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -545,6 +545,8 @@ virXMLNodeContentString(xmlNodePtr node)
return NULL;
}
+ ret = (char *)xmlNodeGetContent(node);
+
if (!ret) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("node '%s' has unexpected NULL content. This could
be caused by malformed input, or a memory allocation failure"),
--
2.29.2