Fix: notification: assert on len > 0 for dropped notification message
[lttng-tools.git] / src / lib / lttng-ctl / channel.cpp
index 080dbb4439659a33c10dc052e81f21b56251b4c9..d1d92d00d5497b9f8cdf27525b2db9591e9f678a 100644 (file)
@@ -53,6 +53,10 @@ int receive_message(struct lttng_notification_channel *channel)
                goto error;
        }
 
+       if (msg.size == 0) {
+               goto skip_payload;
+       }
+
        /* Reserve space for the payload. */
        ret = lttng_dynamic_buffer_set_size(&channel->reception_payload.buffer,
                        channel->reception_payload.buffer.size + msg.size);
@@ -68,6 +72,7 @@ int receive_message(struct lttng_notification_channel *channel)
                goto error;
        }
 
+skip_payload:
        /* Receive message fds. */
        if (msg.fds != 0) {
                ret = lttcomm_recv_payload_fds_unix_sock(channel->socket,
@@ -143,12 +148,12 @@ struct lttng_notification_channel *lttng_notification_channel_create(
                goto end;
        }
 
-       sock_path = (char *) zmalloc(LTTNG_PATH_MAX);
+       sock_path = calloc<char>(LTTNG_PATH_MAX);
        if (!sock_path) {
                goto end;
        }
 
-       channel = (lttng_notification_channel *) zmalloc(sizeof(struct lttng_notification_channel));
+       channel = zmalloc<lttng_notification_channel>();
        if (!channel) {
                goto end;
        }
@@ -343,7 +348,7 @@ int enqueue_dropped_notification(
                goto end;
        }
 
-       pending_notification = (struct pending_notification *) zmalloc(sizeof(*pending_notification));
+       pending_notification = zmalloc<struct pending_notification>();
        if (!pending_notification) {
                ret = -1;
                goto end;
@@ -371,7 +376,7 @@ int enqueue_notification_from_current_message(
                goto end;
        }
 
-       pending_notification = (struct pending_notification *) zmalloc(sizeof(*pending_notification));
+       pending_notification = zmalloc<struct pending_notification>();
        if (!pending_notification) {
                ret = -1;
                goto error;
This page took 0.024878 seconds and 4 git commands to generate.