* Christian Babeux ([email protected]) wrote:
> The session_name should not be free(3) if the user has specified
> a session name on the command line. Also, the caller is responsible to
> free the allocated string when calling get_session_name().
> Handle both cases gracefully.
> 
> Signed-off-by: Christian Babeux <[email protected]>

Acked-by: Mathieu Desnoyers <[email protected]>

> ---
>  src/bin/lttng/commands/destroy.c | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/src/bin/lttng/commands/destroy.c 
> b/src/bin/lttng/commands/destroy.c
> index 5b69cb5..7b7ea0e 100644
> --- a/src/bin/lttng/commands/destroy.c
> +++ b/src/bin/lttng/commands/destroy.c
> @@ -28,6 +28,7 @@
>  
>  #include <common/sessiond-comm/sessiond-comm.h>
>  
> +static char *opt_session_name;
>  static int opt_destroy_all;
>  
>  enum {
> @@ -156,28 +157,32 @@ int cmd_destroy(int argc, const char **argv)
>               goto end;
>       }
>  
> -     session_name = (char *) poptGetArg(pc);
> -
> -     /*
> -      * ignore session name in case all
> -      * sessions are to be destroyed
> -      */
> +     /* Ignore session name in case all sessions are to be destroyed */
>       if (opt_destroy_all) {
>               ret = destroy_all_sessions();
>               goto end;
>       }
> -     if (session_name == NULL) {
> -             ret = get_default_session_name(&session_name);
> -             if (ret < 0 || session_name == NULL) {
> +
> +     opt_session_name = (char *) poptGetArg(pc);
> +
> +     if (opt_session_name == NULL) {
> +             /* No session name specified, lookup default */
> +             session_name = get_session_name();
> +             if (session_name == NULL) {
> +                     ret = CMD_ERROR;
>                       goto end;
>               }
> +     } else {
> +             session_name = opt_session_name;
>       }
> +
>       ret = destroy_session(session_name);
>  
>  end:
> -     poptFreeContext(pc);
> -     if (session_name != NULL) {
> +     if (opt_session_name == NULL) {
>               free(session_name);
>       }
> +
> +     poptFreeContext(pc);
>       return ret;
>  }
> -- 
> 1.7.11.4
> 
> 
> _______________________________________________
> lttng-dev mailing list
> [email protected]
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to