chiark / gitweb /
socket: when creating FIFOs, create parent dirs first, and use right access mode
[elogind.git] / socket.c
index afa001f20f3c0b306f9847c6f124f77cde983613..2a19e97b7bc7957af8fb9e5df798c08f840a9eca 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -267,7 +267,9 @@ static int socket_open_fds(Socket *s) {
                         struct stat st;
                         assert(p->type == SOCKET_FIFO);
 
-                        if (mkfifo(p->path, 0666 & ~s->exec_context.umask) < 0 && errno != EEXIST) {
+                        mkdir_parents(p->path, s->directory_mode);
+
+                        if (mkfifo(p->path, s->socket_mode) < 0 && errno != EEXIST) {
                                 r = -errno;
                                 goto rollback;
                         }