X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=1ef6881c09f8c4e63efab37f257f5869e80ba1ab;hb=f64161251bd649abe5b6a473531adfa3af9bd6b6;hp=f0663d10dd85ee1673dcfe79f561cd1102bb1f86;hpb=2c46f0d263b46ca718618f9bf3e471bf3dffb62d;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index f0663d10d..1ef6881c0 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -1070,13 +1070,14 @@ int relay_recv_metadata(struct lttcomm_relayd_hdr *recv_hdr, goto end; } - data_size = be64toh(recv_hdr->data_size); - payload_size = data_size; - /* - * Add 8 bytes (uint64_t) to the data size which is the value of the - * stream_id and the payload size. - */ - data_size += sizeof(uint64_t); + data_size = payload_size = be64toh(recv_hdr->data_size); + if (data_size < sizeof(struct lttcomm_relayd_metadata_payload)) { + ERR("Incorrect data size"); + ret = -1; + goto end; + } + payload_size -= sizeof(struct lttcomm_relayd_metadata_payload); + if (data_buffer_size < data_size) { data_buffer = realloc(data_buffer, data_size); if (!data_buffer) {