From: myfreeweb Date: Tue, 19 Jun 2018 14:49:18 +0000 (+0000) Subject: wayland: Use shm_open(SHM_ANON) on FreeBSD X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~66 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a1bcbdd02af14406fb912dc16d789ba4a07dd4b8;p=gtk4.git 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). --- 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);