Fix: relayd: live: unchecked return value when opening relay socket
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 18 Feb 2020 00:40:47 +0000 (19:40 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 19 Feb 2020 22:46:33 +0000 (17:46 -0500)
fd_tracker_open_unsuspendable_fd may fail because the underlying
socket() call fails or there may be too many open file descriptors at
the time of the call. In both cases, these errors must be logged and
handled.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I3205896a5e8c83ceba02005a2b73f9466d26427c

src/bin/lttng-relayd/live.c

index f28b9c66fa90fb89301287b8af9910d0aac7f5f0..3ddafe2a16fb0075c33cbf921b9fb91981cfa646 100644 (file)
@@ -561,7 +561,11 @@ struct lttcomm_sock *init_socket(struct lttng_uri *uri, const char *name)
        ret = fd_tracker_open_unsuspendable_fd(the_fd_tracker, &sock_fd,
                        (const char **) (formated_name ? &formated_name : NULL),
                        1, create_sock, sock);
-       free(formated_name);
+       if (ret) {
+               PERROR("Failed to create \"%s\" socket",
+                               formated_name ?: "Unknown");
+               goto error;
+       }
        DBG("Listening on %s socket %d", name, sock->fd);
 
        ret = sock->ops->bind(sock);
@@ -576,12 +580,14 @@ struct lttcomm_sock *init_socket(struct lttng_uri *uri, const char *name)
 
        }
 
+       free(formated_name);
        return sock;
 
 error:
        if (sock) {
                lttcomm_destroy_sock(sock);
        }
+       free(formated_name);
        return NULL;
 }
 
This page took 0.036347 seconds and 4 git commands to generate.