From 1df4aefd2764d510e80633e289a629baf0aa3adb Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 5 Sep 2019 15:18:40 -0400 Subject: [PATCH] Fix: sessiond: handle NULL control output in session descriptor base path getter MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Jérémie Galarneau --- src/common/session-descriptor.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/common/session-descriptor.c b/src/common/session-descriptor.c index b5fdb0677..208eb46ff 100644 --- a/src/common/session-descriptor.c +++ b/src/common/session-descriptor.c @@ -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: -- 2.34.1