summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2022-07-21 17:15:18 +0100
committerPekka Paalanen <pq@iki.fi>2023-04-19 08:28:21 +0000
commit4e6a978e342361da4c9adecf5c1de3ad41a718de (patch)
tree7056471542ba86dee9d6b282c37fc43fb84184b4
parentc0a75ee379b2f46a267e3051ab79c36f37e81f36 (diff)
downloadweston-4e6a978e342361da4c9adecf5c1de3ad41a718de.tar.gz
xwayland: Don't leak fds on failure
Trivial fixup to not leak socketpairs if we need to exit early in the function. Signed-off-by: Daniel Stone <daniels@collabora.com>
-rw-r--r--compositor/xwayland.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/compositor/xwayland.c b/compositor/xwayland.c
index 322a9782..42df8cb9 100644
--- a/compositor/xwayland.c
+++ b/compositor/xwayland.c
@@ -120,13 +120,13 @@ spawn_xserver(void *user_data, const char *display, int abstract_fd, int unix_fd
if (os_socketpair_cloexec(AF_UNIX, SOCK_STREAM, 0, x11_wm_socket.fds) < 0) {
weston_log("X wm connection socketpair failed\n");
- return 1;
+ goto err_wayland_socket;
}
fdstr_update_str1(&x11_wm_socket);
if (pipe2(display_pipe.fds, O_CLOEXEC) < 0) {
weston_log("pipe creation for displayfd failed\n");
- return 1;
+ goto err_x11_wm_socket;
}
fdstr_update_str1(&display_pipe);
@@ -217,6 +217,12 @@ spawn_xserver(void *user_data, const char *display, int abstract_fd, int unix_fd
free(xserver);
return pid;
+
+err_x11_wm_socket:
+ fdstr_close_all(&x11_wm_socket);
+err_wayland_socket:
+ fdstr_close_all(&wayland_socket);
+ return -1;
}
static void