Fix: Memory allocated by xmlNodeGetContent() must be freed by xmlFree()
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 25 Jun 2015 16:42:48 +0000 (12:42 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 25 Jun 2015 17:25:30 +0000 (13:25 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/config/config.c

index 4b681549dcc2a2a85418abed3225d95edde8c614..9b78e17780698a9b30a8c30043108475e7eec5e5 100644 (file)
@@ -2164,7 +2164,7 @@ int process_session_node(xmlNodePtr session_node, const char *session_name,
 {
        int ret, started = -1, snapshot_mode = -1;
        uint64_t live_timer_interval = UINT64_MAX;
-       char *name = NULL;
+       xmlChar *name = NULL;
        xmlNodePtr domains_node = NULL;
        xmlNodePtr output_node = NULL;
        xmlNodePtr node;
@@ -2184,7 +2184,7 @@ int process_session_node(xmlNodePtr session_node, const char *session_name,
                                goto error;
                        }
 
-                       name = (char *) node_content;
+                       name = node_content;
                } else if (!domains_node && !strcmp((const char *) node->name,
                        config_element_domains)) {
                        /* domains */
@@ -2254,7 +2254,7 @@ int process_session_node(xmlNodePtr session_node, const char *session_name,
                goto error;
        }
 
-       if (session_name && strcmp(name, session_name)) {
+       if (session_name && strcmp((char *) name, session_name)) {
                /* This is not the session we are looking for */
                ret = -LTTNG_ERR_NO_SESSION;
                goto error;
@@ -2318,7 +2318,7 @@ domain_init_error:
 
        if (override) {
                /* Destroy session if it exists */
-               ret = lttng_destroy_session(name);
+               ret = lttng_destroy_session((const char *) name);
                if (ret && ret != -LTTNG_ERR_SESS_NOT_FOUND) {
                        ERR("Failed to destroy existing session.");
                        goto error;
@@ -2327,15 +2327,17 @@ domain_init_error:
 
        /* Create session type depending on output type */
        if (snapshot_mode && snapshot_mode != -1) {
-               ret = create_snapshot_session(name, output_node);
+               ret = create_snapshot_session((const char *) name, output_node);
        } else if (live_timer_interval &&
                live_timer_interval != UINT64_MAX) {
-               ret = create_session(name, kernel_domain, ust_domain, jul_domain,
-                               log4j_domain, output_node, live_timer_interval);
+               ret = create_session((const char *) name, kernel_domain,
+                               ust_domain, jul_domain, log4j_domain,
+                               output_node, live_timer_interval);
        } else {
                /* regular session */
-               ret = create_session(name, kernel_domain, ust_domain, jul_domain,
-                               log4j_domain, output_node, UINT64_MAX);
+               ret = create_session((const char *) name, kernel_domain,
+                               ust_domain, jul_domain, log4j_domain,
+                               output_node, UINT64_MAX);
        }
        if (ret) {
                goto error;
@@ -2343,14 +2345,14 @@ domain_init_error:
 
        for (node = xmlFirstElementChild(domains_node); node;
                node = xmlNextElementSibling(node)) {
-               ret = process_domain_node(node, name);
+               ret = process_domain_node(node, (const char *) name);
                if (ret) {
                        goto end;
                }
        }
 
        if (started) {
-               ret = lttng_start_tracing(name);
+               ret = lttng_start_tracing((const char *) name);
                if (ret) {
                        goto end;
                }
@@ -2358,8 +2360,9 @@ domain_init_error:
 
 end:
        if (ret < 0) {
-               ERR("Failed to load session %s: %s", name, lttng_strerror(ret));
-               lttng_destroy_session(name);
+               ERR("Failed to load session %s: %s", (const char *) name,
+                       lttng_strerror(ret));
+               lttng_destroy_session((const char *) name);
        }
 
 error:
@@ -2367,7 +2370,7 @@ error:
        free(ust_domain);
        free(jul_domain);
        free(log4j_domain);
-       free(name);
+       xmlFree(name);
        return ret;
 }
 
This page took 0.028121 seconds and 4 git commands to generate.