X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.cpp;h=684cf466984eabc6fdd973a24a581f7cabaf28e9;hb=21cf9b6b1843774306a76f4dccddddd706b64f79;hp=3622987183c5db8c4bdf8e0f48b70b7bd63b5366;hpb=4bd69c5f1161cd065f487da0f4c1aa03a73c47e4;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/lttng-ctl.cpp b/src/lib/lttng-ctl/lttng-ctl.cpp index 362298718..684cf4669 100644 --- a/src/lib/lttng-ctl/lttng-ctl.cpp +++ b/src/lib/lttng-ctl/lttng-ctl.cpp @@ -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 @@ -47,7 +47,7 @@ #include "lttng-ctl-helper.h" #include -#include +#include #include #define COPY_DOMAIN_PACKED(dst, src) \ @@ -1769,10 +1769,14 @@ int lttng_list_syscalls(struct lttng_event **events) /* * Returns a human readable string describing - * the error code (a negative value). + * the error code (positive or negative value). */ const char *lttng_strerror(int code) { + if (code > 0) { + code = -code; + } + return error_get_str(code); } @@ -2098,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; @@ -2110,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;