[lttng-dev] [PATCH lttng-tools 1/2] Fix: Invalid free on session_name when destroying session
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Thu Aug 16 10:18:53 EDT 2012
* Christian Babeux (christian.babeux at efficios.com) 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 <christian.babeux at efficios.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
> 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
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list