[mutter] xwayland: Make sure /tmp/.X11-unix/ exists



commit 357f3250cbc09c9b4c4064fa2bccfbc9a076a7c8
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed Dec 9 15:04:56 2020 +0100

    xwayland: Make sure /tmp/.X11-unix/ exists
    
    When we're running under a polyinstantiated SELinux environment, we'll
    likely start with an isolated and empty /tmp, meannig no /tmp/.X11-unix
    directory to add things to. To make it possible to still function in
    this kind of setup, make sure said directory exists.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1626>

 src/wayland/meta-xwayland.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
---
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
index 1480911dc4..99d0ef55dd 100644
--- a/src/wayland/meta-xwayland.c
+++ b/src/wayland/meta-xwayland.c
@@ -30,6 +30,8 @@
 #include <glib-unix.h>
 #include <glib.h>
 #include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
 #include <sys/un.h>
 #if defined(HAVE_SYS_RANDOM)
 #include <sys/random.h>
@@ -417,6 +419,23 @@ meta_xwayland_override_display_number (int number)
   display_number_override = number;
 }
 
+static gboolean
+ensure_x11_unix_dir (GError **error)
+{
+  if (mkdir ("/tmp/.X11-unix", 01777) != 0)
+    {
+      if (errno == EEXIST)
+        return TRUE;
+
+      g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
+                   "Failed to create directory \"/tmp/.X11-unix\": %s",
+                   g_strerror (errno));
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
 static gboolean
 open_display_sockets (MetaXWaylandManager  *manager,
                       int                   display_index,
@@ -425,6 +444,9 @@ open_display_sockets (MetaXWaylandManager  *manager,
 {
   int unix_fd;
 
+  if (!ensure_x11_unix_dir (error))
+    return FALSE;
+
   unix_fd = bind_to_unix_socket (display_index, error);
   if (unix_fd < 0)
     return FALSE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]