Fix: use of uninitialized 'nb_pipes_fd'
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 20 Aug 2018 19:12:13 +0000 (15:12 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 20 Aug 2018 19:12:13 +0000 (15:12 -0400)
nb_pipes_fd can be used uninitialized in the consumers' data polling
threads if 'consumer_data.need_update' is false.

In practice, this is not a problem as 'consumer_data.need_update'
is true on the first execution of the thread's loop.

Reported-by: Coverity Scan (1387046 Uninitialized scalar variable)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/consumer/consumer.c

index 46b961e8980d8f30e68062a73dd2979c6ca6bf92..0cfbf5c7c03ef36bf1dc958601babd76e6f3d279 100644 (file)
@@ -2576,7 +2576,9 @@ void *consumer_thread_data_poll(void *data)
        /* local view of the streams */
        struct lttng_consumer_stream **local_stream = NULL, *new_stream = NULL;
        /* local view of consumer_data.fds_count */
-       int nb_fd = 0, nb_pipes_fd;
+       int nb_fd = 0;
+       /* 2 for the consumer_data_pipe and wake up pipe */
+       const int nb_pipes_fd = 2;
        /* Number of FDs with CONSUMER_ENDPOINT_INACTIVE but still open. */
        int nb_inactive_fd = 0;
        struct lttng_consumer_local_data *ctx = data;
@@ -2616,12 +2618,7 @@ void *consumer_thread_data_poll(void *data)
                        free(local_stream);
                        local_stream = NULL;
 
-                       /*
-                        * Allocate for all fds + 2:
-                        *   +1 for the consumer_data_pipe
-                        *   +1 for wake up pipe
-                        */
-                       nb_pipes_fd = 2;
+                       /* Allocate for all fds */
                        pollfd = zmalloc((consumer_data.stream_count + nb_pipes_fd) * sizeof(struct pollfd));
                        if (pollfd == NULL) {
                                PERROR("pollfd malloc");
This page took 0.02794 seconds and 5 git commands to generate.