Fix: sessiond: client: leak of trigger object on invalid client message
[lttng-tools.git] / src / bin / lttng-sessiond / client.c
index 09e683a712d8b41914f9938d306b65b506c74635..00b5ec7e4ab7bb4db6a67c0c32855d2e77236162 100644 (file)
@@ -705,7 +705,7 @@ static enum lttng_error_code receive_lttng_trigger(struct command_ctx *cmd_ctx,
        ssize_t sock_recv_len;
        enum lttng_error_code ret_code;
        struct lttng_payload trigger_payload;
-       struct lttng_trigger *trigger;
+       struct lttng_trigger *trigger = NULL;
 
        lttng_payload_init(&trigger_payload);
        trigger_len = (size_t) cmd_ctx->lsm.u.trigger.length;
@@ -755,6 +755,7 @@ static enum lttng_error_code receive_lttng_trigger(struct command_ctx *cmd_ctx,
                                trigger_len) {
                        ERR("Invalid trigger received as part of command payload");
                        ret_code = LTTNG_ERR_INVALID_TRIGGER;
+                       lttng_trigger_put(trigger);
                        goto end;
                }
        }
@@ -2616,6 +2617,11 @@ static void *thread_manage_clients(void *data)
                        continue;
                }
 
+               if (ret < LTTNG_OK || ret >= LTTNG_ERR_NR) {
+                       WARN("Command returned an invalid status code, returning unknown error: command type = %d, ret = %d", cmd_ctx.lsm.cmd_type, ret);
+                       ret = LTTNG_ERR_UNK;
+               }
+
                cmd_completion_handler = cmd_pop_completion_handler();
                if (cmd_completion_handler) {
                        enum lttng_error_code completion_code;
This page took 0.022893 seconds and 4 git commands to generate.