X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fcommon%2Fevent.cpp;h=dda5eb7ba71176df9d0233d24742f58aed7e2908;hb=c10f9cdd994258358bb3766c2e92dab71e4ceef2;hp=6d82504e2fe71611be5c86a1aea8b03cbb301c4a;hpb=f4f239b35cbae2a8501b1a082e0fd62d8cd117a6;p=lttng-tools.git diff --git a/src/common/event.cpp b/src/common/event.cpp index 6d82504e2..dda5eb7ba 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -200,6 +200,7 @@ static ssize_t lttng_event_probe_attr_create_from_payload( local_attr = NULL; ret = offset; end: + free(local_attr); return ret; } @@ -261,6 +262,7 @@ static ssize_t lttng_event_function_attr_create_from_payload( local_attr = NULL; ret = offset; end: + free(local_attr); return ret; } @@ -619,7 +621,7 @@ deserialize_event_type_payload: } if (ret != event_comm->userspace_probe_location_len) { - WARN("Userspace probe location from the received buffer is not the advertised length: header length = %" PRIu32 ", payload length = %lu", event_comm->userspace_probe_location_len, ret); + WARN("Userspace probe location from the received buffer is not the advertised length: header length = %" PRIu32 ", payload length = %zd", event_comm->userspace_probe_location_len, ret); ret = -1; goto end; } @@ -995,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( @@ -1007,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; } @@ -1024,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; } @@ -1032,21 +1035,25 @@ 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, name_len); + 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( @@ -1481,6 +1488,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 *) @@ -1501,10 +1511,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; }