Fix: lttng: uninitialized pointer free'd when no sessiond is present
[lttng-tools.git] / src / common / session-consumed-size.c
index f29176f8df91e08ca166d74a04f1ff0f12f2ae6c..dfb72632e26fed863c7463848b354655f3327498 100644 (file)
@@ -1,18 +1,8 @@
 /*
- * Copyright (C) 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ * Copyright (C) 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
  *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License, version 2.1 only,
- * as published by the Free Software Foundation.
+ * SPDX-License-Identifier: LGPL-2.1-only
  *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <lttng/condition/condition-internal.h>
@@ -59,11 +49,11 @@ bool lttng_condition_session_consumed_size_validate(
        consumed = container_of(condition, struct lttng_condition_session_consumed_size,
                        parent);
        if (!consumed->session_name) {
-               ERR("Invalid buffer condition: a target session name must be set.");
+               ERR("Invalid session consumed size condition: a target session name must be set.");
                goto end;
        }
        if (!consumed->consumed_threshold_bytes.set) {
-               ERR("Invalid session condition: a threshold must be set.");
+               ERR("Invalid session consumed size condition: a threshold must be set.");
                goto end;
        }
 
@@ -136,8 +126,9 @@ bool lttng_condition_session_consumed_size_is_equal(const struct lttng_condition
                }
        }
 
-       if ((a->session_name && !b->session_name) ||
-                       (!a->session_name && b->session_name)) {
+       assert(a->session_name);
+       assert(b->session_name);
+       if (strcmp(a->session_name, b->session_name)) {
                goto end;
        }
 
@@ -198,7 +189,7 @@ ssize_t init_condition_from_buffer(struct lttng_condition *condition,
        status = lttng_condition_session_consumed_size_set_threshold(condition,
                        condition_comm->consumed_threshold_bytes);
        if (status != LTTNG_CONDITION_STATUS_OK) {
-               ERR("Failed to initialize session consumed condition threshold");
+               ERR("Failed to initialize session consumed size condition threshold");
                ret = -1;
                goto end;
        }
@@ -213,7 +204,7 @@ ssize_t init_condition_from_buffer(struct lttng_condition *condition,
        status = lttng_condition_session_consumed_size_set_session_name(condition,
                        session_name);
        if (status != LTTNG_CONDITION_STATUS_OK) {
-               ERR("Failed to set buffer consumed session name");
+               ERR("Failed to set session consumed size condition's session name");
                ret = -1;
                goto end;
        }
@@ -258,7 +249,6 @@ error:
 
 static
 struct lttng_evaluation *create_evaluation_from_buffer(
-               enum lttng_condition_type type,
                const struct lttng_buffer_view *view)
 {
        const struct lttng_evaluation_session_consumed_size_comm *comm =
@@ -269,7 +259,7 @@ struct lttng_evaluation *create_evaluation_from_buffer(
                goto end;
        }
 
-       evaluation = lttng_evaluation_session_consumed_size_create(type,
+       evaluation = lttng_evaluation_session_consumed_size_create(
                        comm->session_consumed);
 end:
        return evaluation;
@@ -288,8 +278,7 @@ ssize_t lttng_evaluation_session_consumed_size_create_from_buffer(
                goto error;
        }
 
-       evaluation = create_evaluation_from_buffer(
-                       LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE, view);
+       evaluation = create_evaluation_from_buffer(view);
        if (!evaluation) {
                ret = -1;
                goto error;
@@ -403,7 +392,7 @@ end:
 
 static
 int lttng_evaluation_session_consumed_size_serialize(
-               struct lttng_evaluation *evaluation,
+               const struct lttng_evaluation *evaluation,
                struct lttng_dynamic_buffer *buf)
 {
        struct lttng_evaluation_session_consumed_size *consumed;
@@ -428,7 +417,7 @@ void lttng_evaluation_session_consumed_size_destroy(
 
 LTTNG_HIDDEN
 struct lttng_evaluation *lttng_evaluation_session_consumed_size_create(
-               enum lttng_condition_type type, uint64_t consumed)
+               uint64_t consumed)
 {
        struct lttng_evaluation_session_consumed_size *consumed_eval;
 
@@ -437,7 +426,7 @@ struct lttng_evaluation *lttng_evaluation_session_consumed_size_create(
                goto end;
        }
 
-       consumed_eval->parent.type = type;
+       consumed_eval->parent.type = LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE;
        consumed_eval->session_consumed = consumed;
        consumed_eval->parent.serialize = lttng_evaluation_session_consumed_size_serialize;
        consumed_eval->parent.destroy = lttng_evaluation_session_consumed_size_destroy;
This page took 0.036879 seconds and 5 git commands to generate.