[ltt-dev] [lttng-tools PATCH] lttng command line UI: fix allocation/free

David Goulet david.goulet at polymtl.ca
Sat Jul 16 15:04:42 EDT 2011


Merged. Thanks!!

FIN

On 11-07-16 12:06 PM, Mathieu Desnoyers wrote:
> Freeing non-dynamically allocated memory is never a good idea.
> Also fixing 2 memory leaks.
> 
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
>  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;
>  }
> 




More information about the lttng-dev mailing list