prodded by deraadt@, here's a rebased diff on xenocara's source root directory, usually /usr/xenocara.
Index: app/xenodm/xenodm/dm.c =================================================================== RCS file: /cvs/xenocara/app/xenodm/xenodm/dm.c,v retrieving revision 1.6 diff -u -p -u -r1.6 dm.c --- app/xenodm/xenodm/dm.c 11 Jul 2018 16:57:04 -0000 1.6 +++ app/xenodm/xenodm/dm.c 3 Nov 2018 11:10:06 -0000 @@ -604,6 +604,10 @@ StartDisplay (struct display *d) Debug ("pid: %d\n", pid); d->pid = pid; d->status = running; + + if (pledge("stdio rpath cpath proc", NULL) == -1) + exit(OPENFAILED_DISPLAY); + break; } } Index: app/xenodm/xenodm/session.c =================================================================== RCS file: /cvs/xenocara/app/xenodm/xenodm/session.c,v retrieving revision 1.12 diff -u -p -u -r1.12 session.c --- app/xenodm/xenodm/session.c 11 Jul 2018 20:28:41 -0000 1.12 +++ app/xenodm/xenodm/session.c 3 Nov 2018 11:10:06 -0000 @@ -378,6 +378,10 @@ StartClient ( default: Debug ("StartSession, fork succeeded %d\n", pid); *pidp = pid; + + if (pledge("stdio rpath wpath cpath fattr dns proc exec id", NULL) == -1) + exit(25); + return 1; } }