]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
userbd: modernize process_connection() fd possession logic
authorLennart Poettering <lennart@poettering.net>
Wed, 13 Dec 2023 17:19:42 +0000 (18:19 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 13 Dec 2023 17:19:42 +0000 (18:19 +0100)
src/userdb/userwork.c

index b5b76c51e192b307da8ddb681719932d8b4b2fd0..fa7c2dd3195a14b1232a920ec2d149b894490a18 100644 (file)
@@ -425,16 +425,16 @@ static int vl_method_get_memberships(Varlink *link, JsonVariant *parameters, Var
                                               JSON_BUILD_PAIR("groupName", JSON_BUILD_STRING(last_group_name))));
 }
 
-static int process_connection(VarlinkServer *server, int fd) {
+static int process_connection(VarlinkServer *server, int _fd) {
+        _cleanup_close_ int fd = TAKE_FD(_fd); /* always take possesion */
         _cleanup_(varlink_close_unrefp) Varlink *vl = NULL;
         int r;
 
         r = varlink_server_add_connection(server, fd, &vl);
-        if (r < 0) {
-                fd = safe_close(fd);
+        if (r < 0)
                 return log_error_errno(r, "Failed to add connection: %m");
-        }
 
+        TAKE_FD(fd);
         vl = varlink_ref(vl);
 
         for (;;) {