summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-11-29 09:56:03 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-11-29 09:56:03 +0000
commitcc373c0aaa0e7af1edb5651963aba0c0e5070724 (patch)
tree79d1903abbf79a5f6bff221600e3ede794f57f81
parentf3bc48f1bd74bf26681f15a4dae462ca322b11b6 (diff)
downloadlasso-cc373c0aaa0e7af1edb5651963aba0c0e5070724.tar.gz
lasso-cc373c0aaa0e7af1edb5651963aba0c0e5070724.tar.xz
lasso-cc373c0aaa0e7af1edb5651963aba0c0e5070724.zip
check error and free memory in lasso_node_new_from_soap
-rw-r--r--lasso/xml/xml.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 790728e0..672b1df6 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -560,9 +560,8 @@ lasso_node_new_from_soap(const char *soap)
xmlXPathContext *xpathCtx;
xmlXPathObject *xpathObj;
xmlNode *xmlnode;
- LassoNode *node;
+ LassoNode *node = NULL;
- /* FIXME: totally lacking error checking */
doc = xmlParseMemory(soap, strlen(soap));
xpathCtx = xmlXPathNewContext(doc);
xmlXPathRegisterNs(xpathCtx, "s", LASSO_SOAP_ENV_HREF);
@@ -570,9 +569,12 @@ lasso_node_new_from_soap(const char *soap)
xmlnode = xpathObj->nodesetval->nodeTab[0];
- node = lasso_node_new_from_xmlNode(xmlnode);
+ if (xpathObj->nodesetval && xpathObj->nodesetval->nodeNr)
+ node = lasso_node_new_from_xmlNode(xmlnode);
- /* XXX: free xpath objects */
+ xmlFreeDoc(doc);
+ xmlXPathFreeContext(xpathCtx);
+ xmlXPathFreeObject(xpathObj);
return node;
}