[lttng-dev] [PATCH lttng-tools] Fix: sessiond: ht_match_event(): check if filter is NULL

Janine Sutto janinesutto at gmail.com
Wed Jun 15 21:34:17 UTC 2016


It looks like an agent event's filter expression is NULL when
it's created with -a, for example:

    lttng enable-event -j -a

Since there's no check for this in ht_match_event(), strlen()
makes the session daemon segfault with this scenario:

    lttng create
    lttng enable-event -j -a
    lttng disable-event -j -a

Signed-off-by: Janine Sutto <janinesutto at gmail.com>
---
 src/bin/lttng-sessiond/agent.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/bin/lttng-sessiond/agent.c b/src/bin/lttng-sessiond/agent.c
index 8e1ef08..7cbbbde 100644
--- a/src/bin/lttng-sessiond/agent.c
+++ b/src/bin/lttng-sessiond/agent.c
@@ -143,11 +143,18 @@ static int ht_match_event(struct cds_lfht_node *node,
 	}

 	/* Filter expression */
-	if (strncmp(event->filter_expression, key->filter_expression,
-			strlen(event->filter_expression)) != 0) {
+	if (!!event->filter_expression ^ !!key->filter_expression) {
+		/* One has a filter expression, the other does not */
 		goto no_match;
 	}

+	if (event->filter_expression) {
+		if (strncmp(event->filter_expression, key->filter_expression,
+				strlen(event->filter_expression)) != 0) {
+			goto no_match;
+		}
+	}
+
 	return 1;

 no_match:
--
2.8.3



More information about the lttng-dev mailing list