From: Jérémie Galarneau Date: Thu, 25 Jun 2015 16:42:48 +0000 (-0400) Subject: Fix: Memory allocated by xmlNodeGetContent() must be freed by xmlFree() X-Git-Tag: v2.6.1~104 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=25248c1cdd0e9f0cb42e557550c01c589d0adec9;p=lttng-tools.git Fix: Memory allocated by xmlNodeGetContent() must be freed by xmlFree() Signed-off-by: Jérémie Galarneau --- diff --git a/src/common/config/config.c b/src/common/config/config.c index 4b681549d..9b78e1778 100644 --- a/src/common/config/config.c +++ b/src/common/config/config.c @@ -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; }