Fix: unchecked pointer from getenv() for lttng create
[lttng-tools.git] / src / bin / lttng / commands / create.c
index fcf6e128941877a46322827b046e3d79e5043c6d..eac261ac7a4b6575405039553a1606970b74cc1d 100644 (file)
@@ -28,6 +28,8 @@
 #include "../command.h"
 #include "../utils.h"
 
+#include <common/sessiond-comm/sessiond-comm.h>
+
 static char *opt_output_path;
 static char *opt_session_name;
 
@@ -92,13 +94,14 @@ static int create_session()
 
        /* Auto output path */
        if (opt_output_path == NULL) {
-               alloc_path = strdup(config_get_default_path());
+               alloc_path = config_get_default_path();
                if (alloc_path == NULL) {
-                       ERR("Home path not found.\n \
+                       ERR("HOME path not found.\n \
                                 Please specify an output path using -o, --output PATH");
                        ret = CMD_FATAL;
                        goto error;
                }
+               alloc_path = strdup(alloc_path);
 
                if (have_name) {
                        ret = asprintf(&traces_path, "%s/" DEFAULT_TRACE_DIR_NAME
@@ -113,12 +116,21 @@ static int create_session()
                        goto error;
                }
        } else {
-               traces_path = opt_output_path;
+               traces_path = expand_full_path(opt_output_path);
+               if (traces_path == NULL) {
+                       ret = CMD_ERROR;
+                       goto error;
+               }
        }
 
        ret = lttng_create_session(session_name, traces_path);
        if (ret < 0) {
                /* Don't set ret so lttng can interpret the sessiond error. */
+               switch (-ret) {
+               case LTTCOMM_EXIST_SESS:
+                       WARN("Session %s already exists", session_name);
+                       break;
+               }
                goto error;
        }
 
This page took 0.026714 seconds and 4 git commands to generate.