summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-graphical/recipes-graphics/wayland/weston/use-XDG_RUNTIMESHARE_DIR.patch
blob: 0e5d7cdf9cf8b47bf166f73a61618bd290d88bf1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From 0ed62e1a0beb47e033f7632dbf6d2087366b7830 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Bollo?= <jose.bollo@iot.bzh>
Date: Fri, 13 Oct 2017 14:05:56 +0200
Subject: [PATCH] use XDG_RUNTIMESHARE_DIR

When running with LSM Smack, the file returned by the
function 'os_create_anonymous_file' is tagged with the
security label of weston. That security label genrally doesn't
allow sharing of files? Then passing the vreated file descriptor
to the client application fails with EPERM.

To allow file descriptors to be tagged with a security
label that allows clients to receive and use it, that
patch introduce the use of the environment variable
XDG_RUNTIMESHARE_DIR that takes precedence over
XDG_RUNTIME_DIR whe, creating anonymous file is needed.

A correct setting of the shared directory using Smack's
transmute mechanism allows set up file tag for sharing.

This patch was submitted upstream for discussion but
was rejected with the following reason (IIRC): "the
function 'os_create_anonymous_file' and the sharing
are obsolete and should not be used anymore. IVI was
requiring it but newer version don't use it". Halas,
even aligned with latest versions of IVI-shell and weston,
the patch is needed. Because of its simplicity, it can
remain maintained locally out of mainstream in the wait
of further investigations.

Signed-off-by: José Bollo <jose.bollo@iot.bzh>
[Updated for Weston 8.0.0]
Signed-off-by: Scott Murray <scott.murray@konsulko.com>

diff --git a/shared/os-compatibility.c b/shared/os-compatibility.c
index 5e1ce47..9962588 100644
--- a/shared/os-compatibility.c
+++ b/shared/os-compatibility.c
@@ -184,7 +184,9 @@ os_create_anonymous_file(off_t size)
 	} else
 #endif
 	{
-		path = getenv("XDG_RUNTIME_DIR");
+		path = getenv("XDG_RUNTIMESHARE_DIR");
+		if (!path)
+			path = getenv("XDG_RUNTIME_DIR");
 		if (!path) {
 			errno = ENOENT;
 			return -1;