X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fevent.cpp;h=358d058411cf5ce862ff44815b59f52ff5aa4a0d;hb=c9e313bc594f40a86eed237dce222c0fc99c957f;hp=6dca04def6e082527338da51694af1605546787a;hpb=8899bce153ac7c5efc24d55ff69fe8ddab35463b;p=lttng-tools.git diff --git a/src/common/event.cpp b/src/common/event.cpp index 6dca04def..358d05841 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -5,22 +5,20 @@ * */ -#include "common/compat/string.h" -#include "common/macros.h" -#include "lttng/lttng-error.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include + #include -#include +#include #include -#include -#include -#include +#include +#include struct event_list_element { struct lttng_event *event; @@ -77,10 +75,11 @@ static int lttng_event_probe_attr_serialize( { int ret; size_t symbol_name_len; - struct lttng_event_probe_attr_comm comm = { 0 }; + struct lttng_event_probe_attr_comm comm = {}; - symbol_name_len = lttng_strnlen(probe->symbol_name, LTTNG_SYMBOL_NAME_LEN); - if (symbol_name_len == LTTNG_SYMBOL_NAME_LEN) { + symbol_name_len = lttng_strnlen( + probe->symbol_name, sizeof(probe->symbol_name)); + if (symbol_name_len == sizeof(probe->symbol_name)) { /* Not null-termintated. */ ret = -1; goto end; @@ -114,8 +113,9 @@ static int lttng_event_function_attr_serialize( size_t symbol_name_len; struct lttng_event_function_attr_comm comm = { 0 }; - symbol_name_len = lttng_strnlen(function->symbol_name, LTTNG_SYMBOL_NAME_LEN); - if (symbol_name_len == LTTNG_SYMBOL_NAME_LEN) { + symbol_name_len = lttng_strnlen( + function->symbol_name, sizeof(function->symbol_name)); + if (symbol_name_len == sizeof(function->symbol_name)) { /* Not null-termintated. */ ret = -1; goto end; @@ -187,7 +187,7 @@ static ssize_t lttng_event_probe_attr_create_from_payload( } ret = lttng_strncpy(local_attr->symbol_name, name, - LTTNG_SYMBOL_NAME_LEN); + sizeof(local_attr->symbol_name)); if (ret) { ret = -1; goto end; @@ -249,7 +249,7 @@ static ssize_t lttng_event_function_attr_create_from_payload( } ret = lttng_strncpy(local_attr->symbol_name, name, - LTTNG_SYMBOL_NAME_LEN); + sizeof(local_attr->symbol_name)); if (ret) { ret = -1; goto end; @@ -317,8 +317,8 @@ static ssize_t lttng_event_exclusions_create_from_payload( goto end; } - ret = lttng_strncpy(local_exclusions->names[i], - string, LTTNG_SYMBOL_NAME_LEN); + ret = lttng_strncpy(LTTNG_EVENT_EXCLUSION_NAME_AT(local_exclusions, i), string, + sizeof(LTTNG_EVENT_EXCLUSION_NAME_AT(local_exclusions, i))); if (ret) { ret = -1; goto end; @@ -406,8 +406,8 @@ ssize_t lttng_event_create_from_payload(struct lttng_payload_view *view, goto end; } - ret = lttng_strncpy( - local_event->name, name, LTTNG_SYMBOL_NAME_LEN); + ret = lttng_strncpy(local_event->name, name, + sizeof(local_event->name)); if (ret) { ret = -1; goto end; @@ -700,7 +700,7 @@ int lttng_event_serialize(const struct lttng_event *event, unsigned int i; size_t header_offset, size_before_payload; size_t name_len; - struct lttng_event_comm event_comm = { 0 }; + struct lttng_event_comm event_comm = {}; struct lttng_event_comm *header; assert(event); @@ -710,8 +710,8 @@ int lttng_event_serialize(const struct lttng_event *event, /* Save the header location for later in-place header update. */ header_offset = payload->buffer.size; - name_len = lttng_strnlen(event->name, LTTNG_SYMBOL_NAME_LEN); - if (name_len == LTTNG_SYMBOL_NAME_LEN) { + name_len = lttng_strnlen(event->name, sizeof(event->name)); + if (name_len == sizeof(event->name)) { /* Event name is not NULL-terminated. */ ret = -1; goto end; @@ -997,7 +997,8 @@ static ssize_t lttng_event_context_perf_counter_populate_from_payload( const struct lttng_payload_view *view, struct lttng_event_context *event_ctx) { - ssize_t ret, offset = 0; + int ret; + ssize_t consumed, offset = 0; const struct lttng_event_context_perf_counter_comm *comm; size_t name_len; const struct lttng_buffer_view comm_view = lttng_buffer_view_from_view( @@ -1009,7 +1010,7 @@ static ssize_t lttng_event_context_perf_counter_populate_from_payload( event_ctx->ctx == LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER); if (!lttng_buffer_view_is_valid(&comm_view)) { - ret = -1; + consumed = -1; goto end; } @@ -1026,7 +1027,7 @@ static ssize_t lttng_event_context_perf_counter_populate_from_payload( name_len); if (!lttng_buffer_view_is_valid(&provider_name_view)) { - ret = -1; + consumed = -1; goto end; } @@ -1034,21 +1035,26 @@ static ssize_t lttng_event_context_perf_counter_populate_from_payload( if (!lttng_buffer_view_contains_string( &provider_name_view, name, name_len)) { - ret = -1; + consumed = -1; goto end; } - lttng_strncpy(event_ctx->u.perf_counter.name, name, name_len); + ret = lttng_strncpy(event_ctx->u.perf_counter.name, name, + sizeof(event_ctx->u.perf_counter.name)); + if (ret) { + consumed = -1; + goto end; + } offset += name_len; } event_ctx->u.perf_counter.config = comm->config; event_ctx->u.perf_counter.type = comm->type; - ret = offset; + consumed = offset; end: - return ret; + return consumed; } ssize_t lttng_event_context_create_from_payload( @@ -1123,7 +1129,7 @@ static int lttng_event_context_app_serialize( struct lttng_payload *payload) { int ret; - struct lttng_event_context_app_comm comm = { 0 }; + struct lttng_event_context_app_comm comm = {}; size_t provider_len, ctx_len; const char *provider_name; const char *ctx_name; @@ -1191,16 +1197,16 @@ static int lttng_event_context_perf_counter_serialize( struct lttng_payload *payload) { int ret; - struct lttng_event_context_perf_counter_comm comm = { 0 }; + struct lttng_event_context_perf_counter_comm comm = {}; assert(payload); assert(context); comm.config = context->config; comm.type = context->type; - comm.name_len = lttng_strnlen(context->name, LTTNG_SYMBOL_NAME_LEN); + comm.name_len = lttng_strnlen(context->name, sizeof(context->name)); - if (comm.name_len == LTTNG_SYMBOL_NAME_LEN) { + if (comm.name_len == sizeof(context->name)) { ret = -1; goto end; } @@ -1389,7 +1395,8 @@ ssize_t lttng_event_field_create_from_payload( assert(name); assert(event); - if (lttng_strncpy(local_event_field->field_name, name , LTTNG_SYMBOL_NAME_LEN)) { + if (lttng_strncpy(local_event_field->field_name, name, + sizeof(local_event_field->field_name))) { ret = -1; goto end; } @@ -1412,7 +1419,7 @@ int lttng_event_field_serialize(const struct lttng_event_field *field, int ret; size_t header_offset, size_before_event; size_t name_len; - struct lttng_event_field_comm event_field_comm = { 0 }; + struct lttng_event_field_comm event_field_comm = {}; struct lttng_event_field_comm *header; assert(field); @@ -1421,8 +1428,8 @@ int lttng_event_field_serialize(const struct lttng_event_field *field, /* Save the header location for later in-place header update. */ header_offset = payload->buffer.size; - name_len = strnlen(field->field_name, LTTNG_SYMBOL_NAME_LEN); - if (name_len == LTTNG_SYMBOL_NAME_LEN) { + name_len = strnlen(field->field_name, sizeof(field->field_name)); + if (name_len == sizeof(field->field_name)) { /* Event name is not NULL-terminated. */ ret = -1; goto end; @@ -1483,6 +1490,9 @@ static enum lttng_error_code compute_flattened_size( /* The basic struct lttng_event */ storage_req = event_count * sizeof(struct lttng_event); + /* The struct·lttng_event_extended */ + storage_req += event_count * sizeof(struct lttng_event_extended); + for (i = 0; i < event_count; i++) { int probe_storage_req = 0; const struct event_list_element *element = (const struct event_list_element *) @@ -1503,10 +1513,6 @@ static enum lttng_error_code compute_flattened_size( probe_storage_req = ret; } - /* The struct·lttng_event_extended */ - storage_req += event_count * - sizeof(struct lttng_event_extended); - if (element->filter_expression) { storage_req += strlen(element->filter_expression) + 1; }