Fix: missing strdup oom check in lttng create.c
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 26 Nov 2014 17:27:29 +0000 (12:27 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 26 Nov 2014 20:46:28 +0000 (15:46 -0500)
Introduce tmp_path to ensure that no code path can possibly try to free
the return value of utils_get_home_dir(). Re-using alloc_path for both
static and dynamically allocated pointer is error-prone.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng/commands/create.c

index 1fa6d418b4ff439c297e08d00bd40f9fff0a1f62..1ebe590ad279915e8e3e7ba05784e0333eb9064f 100644 (file)
@@ -377,16 +377,22 @@ static int create_session(void)
                 */
                url = NULL;
        } else if (!opt_no_output) {
                 */
                url = NULL;
        } else if (!opt_no_output) {
+               char *tmp_path;
+
                /* Auto output path */
                /* Auto output path */
-               alloc_path = utils_get_home_dir();
-               if (alloc_path == NULL) {
+               tmp_path = utils_get_home_dir();
+               if (tmp_path == NULL) {
                        ERR("HOME path not found.\n \
                                        Please specify an output path using -o, --output PATH");
                        ret = CMD_FATAL;
                        goto error;
                }
                        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);
-
+               alloc_path = strdup(tmp_path);
+               if (!alloc_path) {
+                       PERROR("allocating alloc_path");
+                       ret = CMD_FATAL;
+                       goto error;
+               }
                ret = asprintf(&alloc_url,
                                "file://%s/" DEFAULT_TRACE_DIR_NAME "/%s",
                                alloc_path, session_name_date);
                ret = asprintf(&alloc_url,
                                "file://%s/" DEFAULT_TRACE_DIR_NAME "/%s",
                                alloc_path, session_name_date);
This page took 0.026899 seconds and 4 git commands to generate.