Fix: lttng: poptGetArg doesn't provide string ownership
[lttng-tools.git] / src / bin / lttng / commands / list.c
index 70dc99b0afc55801067e6b224481977d597ba471..58e2a6fb48d6a190b46fd2cec3de5a2f6c8a8cd7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 David Goulet <david.goulet@polymtl.ca>
+ * Copyright (C) 2011 EfficiOS Inc.
  * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
  *
  * SPDX-License-Identifier: GPL-2.0-only
@@ -273,7 +273,7 @@ static void print_userspace_probe_location(struct lttng_event *event)
        case LTTNG_USERSPACE_PROBE_LOCATION_TYPE_FUNCTION:
        {
                const char *function_name;
-               const char *binary_path;
+               char *binary_path;
 
                MSG("%sType: Function", indent8);
                function_name = lttng_userspace_probe_location_function_get_function_name(location);
@@ -292,12 +292,14 @@ static void print_userspace_probe_location(struct lttng_event *event)
                        MSG("%sLookup method: INVALID LOOKUP TYPE ENCOUNTERED", indent8);
                        break;
                }
+
+               free(binary_path);
                break;
        }
        case LTTNG_USERSPACE_PROBE_LOCATION_TYPE_TRACEPOINT:
        {
                const char *probe_name, *provider_name;
-               const char *binary_path;
+               char *binary_path;
 
                MSG("%sType: Tracepoint", indent8);
                probe_name = lttng_userspace_probe_location_tracepoint_get_probe_name(location);
@@ -313,6 +315,8 @@ static void print_userspace_probe_location(struct lttng_event *event)
                        MSG("%sLookup method: INVALID LOOKUP TYPE ENCOUNTERED", indent8);
                        break;
                }
+
+               free(binary_path);
                break;
        }
        default:
@@ -1446,7 +1450,6 @@ static int list_channels(const char *channel_name)
                                count = 0;
                        } else {
                                ret = CMD_SUCCESS;
-                               WARN("No kernel channel");
                                goto error_channels;
                        }
                        break;
@@ -2265,7 +2268,7 @@ end:
 int cmd_list(int argc, const char **argv)
 {
        int opt, ret = CMD_SUCCESS;
-       const char *session_name, *leftover = NULL;
+       const char *arg_session_name, *leftover = NULL;
        static poptContext pc;
        struct lttng_domain domain;
        struct lttng_domain *domains = NULL;
@@ -2323,8 +2326,8 @@ int cmd_list(int argc, const char **argv)
        }
 
        /* Get session name (trailing argument) */
-       session_name = poptGetArg(pc);
-       DBG2("Session name: %s", session_name);
+       arg_session_name = poptGetArg(pc);
+       DBG2("Session name: %s", arg_session_name);
 
        leftover = poptGetArg(pc);
        if (leftover) {
@@ -2354,14 +2357,14 @@ int cmd_list(int argc, const char **argv)
        }
 
        if (opt_kernel || opt_userspace || opt_jul || opt_log4j || opt_python) {
-               handle = lttng_create_handle(session_name, &domain);
+               handle = lttng_create_handle(arg_session_name, &domain);
                if (handle == NULL) {
                        ret = CMD_FATAL;
                        goto end;
                }
        }
 
-       if (session_name == NULL) {
+       if (arg_session_name == NULL) {
                if (!opt_kernel && !opt_userspace && !opt_jul && !opt_log4j
                                && !opt_python) {
                        ret = list_sessions(NULL);
@@ -2409,19 +2412,19 @@ int cmd_list(int argc, const char **argv)
                        }
                }
                /* MI: the ouptut of list_sessions is an unclosed session element */
-               ret = list_sessions(session_name);
+               ret = list_sessions(arg_session_name);
                if (ret) {
                        goto end;
                }
 
-               ret = list_rotate_settings(session_name);
+               ret = list_rotate_settings(arg_session_name);
                if (ret) {
                        goto end;
                }
 
                /* Domain listing */
                if (opt_domain) {
-                       ret = list_domains(session_name);
+                       ret = list_domains(arg_session_name);
                        goto end;
                }
 
@@ -2471,7 +2474,7 @@ int cmd_list(int argc, const char **argv)
                        int i, nb_domain;
 
                        /* We want all domain(s) */
-                       nb_domain = lttng_list_domains(session_name, &domains);
+                       nb_domain = lttng_list_domains(arg_session_name, &domains);
                        if (nb_domain < 0) {
                                ret = CMD_ERROR;
                                ERR("%s", lttng_strerror(nb_domain));
@@ -2524,7 +2527,7 @@ int cmd_list(int argc, const char **argv)
                                        lttng_destroy_handle(handle);
                                }
 
-                               handle = lttng_create_handle(session_name, &domains[i]);
+                               handle = lttng_create_handle(arg_session_name, &domains[i]);
                                if (handle == NULL) {
                                        ret = CMD_FATAL;
                                        goto end;
This page took 0.025815 seconds and 4 git commands to generate.