]> err.no Git - util-linux/commitdiff
uuidd: Avoid closing the server socket when calling create_daemon()
authorTheodore Ts'o <tytso@mit.edu>
Wed, 1 Jul 2009 02:47:54 +0000 (22:47 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 1 Jul 2009 03:26:09 +0000 (23:26 -0400)
In the event that file descriptors 0-2 are closed when uuidd is
started, the server socket could be created as a file descriptor that
will get closed when create_daemon() tries detaching the uuidd daemon
from its controlling tty.   Avoid this case by using dup(2).

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
misc-utils/uuidd.c

index 5e597833e75ba28e5f08fb494632bab2a9ea535d..4284457183f49b511c0b9f4499f0696a0dde5737 100644 (file)
@@ -274,6 +274,18 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
                exit(1);
        }
 
+       /*
+        * Make sure the socket isn't using fd numbers 0-2 to avoid it
+        * getting closed by create_daemon()
+        */
+       while (!debug && s <= 2) {
+               s = dup(s);
+               if (s < 0) {
+                       perror("dup");
+                       exit(1);
+               }
+       }
+
        /*
         * Create the address we will be binding to.
         */