diff --git a/src/curl_xml.c b/src/curl_xml.c
index e83ac2d6797d95b4f8d1652a06e2bfe0347e6b2c..39d6fd04b3c93f5ac9bec31df153f8093203e626 100644 (file)
--- a/src/curl_xml.c
+++ b/src/curl_xml.c
@@ -701,14 +701,15 @@ static int cx_config_add_values (const char *name, cx_xpath_t *xpath, /* {{{ */
return (0);
} /* }}} cx_config_add_values */
return (0);
} /* }}} cx_config_add_values */
-static int cx_config_add_xpath (cx_t *db, /* {{{ */
- oconfig_item_t *ci)
+static int cx_config_add_xpath (cx_t *db, oconfig_item_t *ci) /* {{{ */
{
cx_xpath_t *xpath;
{
cx_xpath_t *xpath;
+ char *name;
+ llentry_t *le;
int status;
int i;
int status;
int i;
- xpath = (cx_xpath_t *) malloc (sizeof (*xpath));
+ xpath = malloc (sizeof (*xpath));
if (xpath == NULL)
{
ERROR ("curl_xml plugin: malloc failed.");
if (xpath == NULL)
{
ERROR ("curl_xml plugin: malloc failed.");
status = cf_util_get_string (ci, &xpath->path);
if (status != 0)
{
status = cf_util_get_string (ci, &xpath->path);
if (status != 0)
{
- sfree (xpath);
+ cx_xpath_free (xpath);
return (status);
}
/* error out if xpath->path is an empty string */
return (status);
}
/* error out if xpath->path is an empty string */
- if (*xpath->path == 0)
+ if (strlen (xpath->path) == 0)
{
ERROR ("curl_xml plugin: invalid xpath. "
"xpath value can't be an empty string");
{
ERROR ("curl_xml plugin: invalid xpath. "
"xpath value can't be an empty string");
- sfree (xpath);
+ cx_xpath_free (xpath);
return (-1);
}
return (-1);
}
break;
} /* for (i = 0; i < ci->children_num; i++) */
break;
} /* for (i = 0; i < ci->children_num; i++) */
- if (status == 0 && xpath->type == NULL)
+ if (status != 0)
{
{
- WARNING ("curl_xml plugin: `Type' missing in `xpath' block.");
- status = -1;
+ cx_xpath_free (xpath);
+ return status;
}
}
- if (status == 0)
+ if (xpath->type == NULL)
{
{
- char *name;
- llentry_t *le;
+ WARNING ("curl_xml plugin: `Type' missing in `xpath' block.");
+ cx_xpath_free (xpath);
+ return -1;
+ }
+ if (db->list == NULL)
+ {
+ db->list = llist_create();
if (db->list == NULL)
{
if (db->list == NULL)
{
- db->list = llist_create();
- if (db->list == NULL)
- {
- ERROR ("curl_xml plugin: list creation failed.");
- sfree (xpath->path);
- sfree (xpath);
- return (-1);
- }
- }
-
- name = strdup(xpath->path);
- if (name == NULL)
- {
- ERROR ("curl_xml plugin: strdup failed.");
- sfree (xpath->path);
- sfree (xpath);
- return (-1);
- }
-
- le = llentry_create (name, xpath);
- if (le == NULL)
- {
- ERROR ("curl_xml plugin: llentry_create failed.");
- sfree (xpath->path);
- sfree (xpath);
+ ERROR ("curl_xml plugin: list creation failed.");
+ cx_xpath_free (xpath);
return (-1);
}
return (-1);
}
+ }
- llist_append (db->list, le);
+ name = strdup (xpath->path);
+ if (name == NULL)
+ {
+ ERROR ("curl_xml plugin: strdup failed.");
+ cx_xpath_free (xpath);
+ return (-1);
}
}
- return (status);
+ le = llentry_create (name, xpath);
+ if (le == NULL)
+ {
+ ERROR ("curl_xml plugin: llentry_create failed.");
+ cx_xpath_free (xpath);
+ sfree (name);
+ return (-1);
+ }
+
+ llist_append (db->list, le);
+ return (0);
} /* }}} int cx_config_add_xpath */
static int cx_config_add_namespace (cx_t *db, /* {{{ */
} /* }}} int cx_config_add_xpath */
static int cx_config_add_namespace (cx_t *db, /* {{{ */