From a1bcbdd02af14406fb912dc16d789ba4a07dd4b8 Mon Sep 17 00:00:00 2001 From: myfreeweb Date: Tue, 19 Jun 2018 14:49:18 +0000 Subject: wayland: Use shm_open(SHM_ANON) on FreeBSD This functionality is similar to Linux's memfd. It creates anonymous shared memory without touching the filesystem, which allows it to work in Capsicum capability mode (sandbox). --- gdk/wayland/gdkdisplay-wayland.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gdk/wayland') diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c index b64f2f105b..f83dd45046 100644 --- a/gdk/wayland/gdkdisplay-wayland.c +++ b/gdk/wayland/gdkdisplay-wayland.c @@ -1210,6 +1210,9 @@ open_shared_memory (void) if (force_shm_open) { +#if defined (__FreeBSD__) + ret = shm_open (SHM_ANON, O_CREAT | O_EXCL | O_RDWR | O_CLOEXEC, 0600); +#else char name[NAME_MAX - 1] = ""; sprintf (name, "/gdk-wayland-%x", g_random_int ()); @@ -1220,6 +1223,7 @@ open_shared_memory (void) shm_unlink (name); else if (errno == EEXIST) continue; +#endif } } while (ret < 0 && errno == EINTR); -- cgit v1.2.1