From 9a0499b64d1b7578f6ef37f4dc41e41409ea7651 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Sat, 20 Jan 2024 17:00:52 +0300 Subject: [PATCH] module-rtp-sap: fix fd leak --- src/modules/module-rtp-sap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/module-rtp-sap.c b/src/modules/module-rtp-sap.c index 236eb9dcb..f6f21f07d 100644 --- a/src/modules/module-rtp-sap.c +++ b/src/modules/module-rtp-sap.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -386,10 +387,9 @@ static bool is_multicast(struct sockaddr *sa, socklen_t salen) static int make_unix_socket(char *path, char *client_path) { struct sockaddr_un client_addr, server_addr; - int fd; - fd = socket(AF_UNIX, SOCK_DGRAM, 0); - if (fd == -1) { + spa_autoclose int fd = socket(AF_UNIX, SOCK_DGRAM, 0); + if (fd < 0) { pw_log_warn("Failed to create PTP management socket"); return -1; } @@ -398,7 +398,7 @@ static int make_unix_socket(char *path, char *client_path) { client_addr.sun_family = AF_UNIX; strncpy(client_addr.sun_path, client_path, strlen(client_path)); - if (bind(fd, (struct sockaddr *)&client_addr, sizeof(client_addr)) == -1) { + if (bind(fd, (struct sockaddr *)&client_addr, sizeof(client_addr)) < 0) { pw_log_warn("Failed to bind PTP management socket"); return -1; } @@ -407,12 +407,12 @@ static int make_unix_socket(char *path, char *client_path) { server_addr.sun_family = AF_UNIX; strncpy(server_addr.sun_path, path, sizeof(server_addr.sun_path) - 1); - if (connect(fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { + if (connect(fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { pw_log_warn("Failed to connect PTP management socket"); return -1; } - return fd; + return spa_steal_fd(fd); } static int make_send_socket(