Fix: sessiond: handle NULL control output in session descriptor base path getter
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 5 Sep 2019 19:18:40 +0000 (15:18 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 6 Sep 2019 15:32:32 +0000 (11:32 -0400)
Creating a session with "lttng create --live" without specifying any
URL triggers a SEGFAULT (dereferencing a NULL pointer) because the
output is not set when getting the session descriptor base path.

Indeed, the destination output URL will only be set later in
cmd_create_session_from_descriptor(), when setting the default output.

When the default output is used, no base path override is possible,
therefore it is fine to assign the base_path to NULL in the base path
getter.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/session-descriptor.c

index b5fdb0677f8153d00e1c8517f16816e9e02dbb69..208eb46ffa8593bb978a6f7c87a7c83b37661c3b 100644 (file)
@@ -1186,8 +1186,12 @@ int lttng_session_descriptor_get_base_path(struct lttng_session_descriptor *dst,
        switch (dst->output_type) {
        case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NETWORK:
        {
-               *_base_path = dst->output.network.control->subdir[0] ?
-                               dst->output.network.control->subdir : NULL;
+               if (dst->output.network.control &&
+                               dst->output.network.control->subdir[0]) {
+                       *_base_path = dst->output.network.control->subdir;
+               } else {
+                       *_base_path = NULL;
+               }
                break;
        }
        case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_LOCAL:
This page took 0.034451 seconds and 4 git commands to generate.