X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.c;h=d72250b1e4041a56ea4612f029e00417f6212cbd;hb=a878d96125906e6660e6ef3d1f970c13a4e22fbd;hp=7ad1fe13291b8f40599ad60ce197bbbfc5c6dae5;hpb=1085f5eafd7f240089e410d94cb3f8b9fa19a090;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index 7ad1fe132..d72250b1e 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -3,7 +3,7 @@ * * Linux Trace Toolkit Control Library * - * Copyright (C) 2011 David Goulet + * Copyright (C) 2011 EfficiOS Inc. * Copyright (C) 2016 Jérémie Galarneau * * SPDX-License-Identifier: LGPL-2.1-only @@ -2102,6 +2102,12 @@ int lttng_list_sessions(struct lttng_session **out_sessions) memset(&lsm, 0, sizeof(lsm)); lsm.cmd_type = LTTNG_LIST_SESSIONS; + /* + * Initialize out_sessions to NULL so it is initialized when + * lttng_list_sessions returns 0, thus allowing *out_sessions to + * be subsequently freed. + */ + *out_sessions = NULL; ret = lttng_ctl_ask_sessiond(&lsm, (void**) &sessions); if (ret <= 0) { goto end; @@ -2114,7 +2120,6 @@ int lttng_list_sessions(struct lttng_session **out_sessions) if (ret % session_size) { ret = -LTTNG_ERR_UNK; free(sessions); - *out_sessions = NULL; goto end; } session_count = (size_t) ret / session_size; @@ -2618,14 +2623,19 @@ end: */ int lttng_set_tracing_group(const char *name) { + char *new_group; if (name == NULL) { return -LTTNG_ERR_INVALID; } - if (asprintf(&tracing_group, "%s", name) < 0) { + if (asprintf(&new_group, "%s", name) < 0) { return -LTTNG_ERR_FATAL; } + free(tracing_group); + tracing_group = new_group; + new_group = NULL; + return 0; }