Many of our calls to xmlNodeGetContent() (which are now all via
virXMLNodeContentString() are failing to check for a NULL return. We
need to remedy that, but in order to make the remedy simpler, let's
log an error in virXMLNodeContentString(), so that the callers don't
all individually need to (since it would be the same error message for
all of them anyway).
Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
char *
virXMLNodeContentString(xmlNodePtr node)
{
- return (char *)xmlNodeGetContent(node);
+ char *ret = (char *)xmlNodeGetContent(node);
+
+ if (node->type != XML_ELEMENT_NODE) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("node '%s' has unexpected type %d"),
+ node->name, node->type);
+ return NULL;
+ }
+
+ 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"),
+ node->name);
+ return NULL;
+ }
+
+ return ret;
}