diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2004-11-29 09:56:03 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2004-11-29 09:56:03 +0000 |
| commit | cc373c0aaa0e7af1edb5651963aba0c0e5070724 (patch) | |
| tree | 79d1903abbf79a5f6bff221600e3ede794f57f81 | |
| parent | f3bc48f1bd74bf26681f15a4dae462ca322b11b6 (diff) | |
| download | lasso-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.c | 10 |
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; } |
