wsman-soap: account for NULL from ws_xml_get_node_text
Bail early if ws_xml_get_node_text returns NULL.
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
diff --git a/src/lib/wsman-soap.c b/src/lib/wsman-soap.c
index 2d2c6c0..9949958 100644
--- a/src/lib/wsman-soap.c
+++ b/src/lib/wsman-soap.c
@@ -252,8 +252,18 @@
enumInfo->releaseproc = wsman_get_release_endpoint(epcntx, indoc);
to = ws_xml_get_node_text(
ws_xml_get_child(header, 0, XML_NS_ADDRESSING, WSA_TO));
+ if (to == NULL) {
+ error("No to node");
+ fault_code = WSMAN_INTERNAL_ERROR;
+ goto DONE;
+ }
uri = ws_xml_get_node_text(
ws_xml_get_child(header, 0, XML_NS_WS_MAN, WSM_RESOURCE_URI));
+ if (uri == NULL) {
+ error("No uri node");
+ fault_code = WSMAN_INTERNAL_ERROR;
+ goto DONE;
+ }
enumInfo->epr_to = u_strdup(to);
enumInfo->epr_uri = u_strdup(uri);
@@ -320,6 +330,12 @@
XML_NS_ADDRESSING, WSA_TO));
char *uri= ws_xml_get_node_text(ws_xml_get_child(header, 0,
XML_NS_WS_MAN, WSM_RESOURCE_URI));
+ if (to == NULL || uri == NULL) {
+ error("No to or uri node");
+ status->fault_code = WSMAN_INTERNAL_ERROR;
+ status->fault_detail_code = 0;
+ return 0;
+ }
if (strcmp(enumInfo->epr_to, to) != 0 ||
strcmp(enumInfo->epr_uri, uri) != 0 ) {