[PATCH] compositor: block running drm backend using weston binary

Rafal Mielniczuk rafal.mielniczuk2 at gmail.com
Wed Mar 27 09:14:24 PDT 2013


While running weston with drm-backend, we check if its parent executable
name was weston-launch. In case it wasn't, we print error message and
quit.

This fixes https://bugs.freedesktop.org/show_bug.cgi?id=60926
---
 src/compositor.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/compositor.c b/src/compositor.c
index 3e24295..1ad73b2 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -3491,6 +3491,10 @@ int main(int argc, char *argv[])
 	char *socket_name = "wayland-0";
 	int32_t version = 0;
 	char *config_file;
+	int ppid;
+	FILE *proc_file;
+	char proc_name[128];
+	char parent_name[128];
 
 	const struct config_key core_config_keys[] = {
 		{ "modules", CONFIG_KEY_STRING, &modules },
@@ -3556,6 +3560,18 @@ int main(int argc, char *argv[])
 			backend = WESTON_NATIVE_BACKEND;
 	}
 
+	if (!strcmp(backend, WESTON_NATIVE_BACKEND)) {
+		ppid = getppid();
+		sprintf(proc_name, "/proc/%d/status", ppid);
+		proc_file = fopen(proc_name, "r");
+		fgets(parent_name, 128, proc_file);
+		if (!strstr(parent_name, "weston-launch")) {
+			weston_log("fatal: drm backend should be run "
+				   "using weston-launch binary\n");
+			exit(EXIT_FAILURE);
+		}
+	}
+
 	config_file = config_file_path("weston.ini");
 	parse_config_file(config_file, cs, ARRAY_LENGTH(cs), NULL);
 
-- 
1.8.2



More information about the wayland-devel mailing list