From: Mike Yuan Date: Fri, 12 Apr 2024 18:40:22 +0000 (+0800) Subject: sd-dhcp-server: use close_and_replace (avoid fd leak) X-Git-Tag: v256-rc1~209^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d2198b3206e075c69f597692680dc972cb838f63;p=thirdparty%2Fsystemd.git sd-dhcp-server: use close_and_replace (avoid fd leak) Follow-up for 11b88419ae0004547a0724aa459ddcb5d243f25c Fixes #32252 --- diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 427ed63e5b1..c3b0f82dc4f 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -1605,8 +1605,7 @@ int sd_dhcp_server_set_lease_file(sd_dhcp_server *server, int dir_fd, const char if (!path_is_safe(path)) return -EINVAL; - _cleanup_close_ int fd = -EBADF; - fd = fd_reopen(dir_fd, O_CLOEXEC | O_DIRECTORY | O_PATH); + _cleanup_close_ int fd = fd_reopen(dir_fd, O_CLOEXEC | O_DIRECTORY | O_PATH); if (fd < 0) return fd; @@ -1614,6 +1613,7 @@ int sd_dhcp_server_set_lease_file(sd_dhcp_server *server, int dir_fd, const char if (r < 0) return r; - server->lease_dir_fd = TAKE_FD(fd); + close_and_replace(server->lease_dir_fd, fd); + return 0; }