Freeing non-dynamically allocated memory is never a good idea. Also fixing 2 memory leaks.
Signed-off-by: Mathieu Desnoyers <[email protected]> --- lttng/commands/destroy.c | 4 +++- lttng/commands/disable_events.c | 5 ++++- lttng/commands/enable_events.c | 5 ++++- lttng/commands/start.c | 4 +++- lttng/commands/stop.c | 4 +++- lttng/utils.c | 9 +++++---- 6 files changed, 22 insertions(+), 9 deletions(-) Index: lttng-tools/lttng/commands/destroy.c =================================================================== --- lttng-tools.orig/lttng/commands/destroy.c +++ lttng-tools/lttng/commands/destroy.c @@ -97,7 +97,9 @@ static int destroy_session() ret = CMD_SUCCESS; free_name: - free(session_name); + if (opt_session_name == NULL) { + free(session_name); + } error: return ret; } Index: lttng-tools/lttng/utils.c =================================================================== --- lttng-tools.orig/lttng/utils.c +++ lttng-tools/lttng/utils.c @@ -58,18 +58,19 @@ int set_session_name(char *name) int ret; char *session_name; - if (name != NULL) { - session_name = name; - } else { + if (!name) { session_name = get_session_name(); if (session_name == NULL) { ret = -1; goto error; } + } else { + session_name = name; } lttng_set_session_name(session_name); - free(session_name); + if (!name) + free(session_name); ret = 0; Index: lttng-tools/lttng/commands/disable_events.c =================================================================== --- lttng-tools.orig/lttng/commands/disable_events.c +++ lttng-tools/lttng/commands/disable_events.c @@ -83,7 +83,7 @@ static void usage(FILE *ofp) static int disable_events(void) { int err, ret = CMD_SUCCESS; - char *event_name, *channel_name; + char *event_name, *channel_name = NULL; struct lttng_event ev; if (set_session_name(opt_session_name) < 0) { @@ -147,6 +147,9 @@ static int disable_events(void) } error: + if (opt_channel_name == NULL) { + free(channel_name); + } return ret; } Index: lttng-tools/lttng/commands/enable_events.c =================================================================== --- lttng-tools.orig/lttng/commands/enable_events.c +++ lttng-tools/lttng/commands/enable_events.c @@ -152,7 +152,7 @@ error: static int enable_events(void) { int err, ret = CMD_SUCCESS; - char *event_name, *channel_name; + char *event_name, *channel_name = NULL; struct lttng_event ev; if (set_session_name(opt_session_name) < 0) { @@ -235,6 +235,9 @@ static int enable_events(void) } error: + if (opt_channel_name == NULL) { + free(channel_name); + } return ret; } Index: lttng-tools/lttng/commands/start.c =================================================================== --- lttng-tools.orig/lttng/commands/start.c +++ lttng-tools/lttng/commands/start.c @@ -85,7 +85,9 @@ static int start_tracing(void) MSG("Tracing started for session %s", session_name); free_name: - free(session_name); + if (opt_session_name == NULL) { + free(session_name); + } error: return ret; } Index: lttng-tools/lttng/commands/stop.c =================================================================== --- lttng-tools.orig/lttng/commands/stop.c +++ lttng-tools/lttng/commands/stop.c @@ -83,7 +83,9 @@ static int stop_tracing(void) MSG("Tracing stopped for session %s", session_name); free_name: - free(session_name); + if (opt_session_name == NULL) { + free(session_name); + } error: return ret; } -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
