[lttng-tools,1/1] Fix: sessiond: handle NULL control output in session descriptor base path getter
diff mbox series

Message ID 20190905191840.21430-1-mathieu.desnoyers@efficios.com
State Accepted, archived
Headers show
Series
  • [lttng-tools,1/1] Fix: sessiond: handle NULL control output in session descriptor base path getter
Related show

Commit Message

Mathieu Desnoyers Sept. 5, 2019, 7:18 p.m. UTC
Creating a session with "lttng create --live" without specifying any
URL triggers a NULL pointer exception 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 at efficios.com>
---
 src/common/session-descriptor.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Jérémie Galarneau Sept. 6, 2019, 3:36 p.m. UTC | #1
Merged in master and stable-2.11. Thanks!

J?r?mie

On Thu, Sep 05, 2019 at 03:18:40PM -0400, Mathieu Desnoyers wrote:
> Creating a session with "lttng create --live" without specifying any
> URL triggers a NULL pointer exception because the output is not set

A NullPointerException, in C?! ;-)

> 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 at efficios.com>
> ---
>  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 b5fdb067..208eb46f 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.11.0
>

Patch
diff mbox series

diff --git a/src/common/session-descriptor.c b/src/common/session-descriptor.c
index b5fdb067..208eb46f 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: