Hi,

Looking at pledging xenodm a little bit more I was able to run it with
the diff below across X restarts, with stock configuration.

Please test it, if you have special configs better since most likely
this will break it but we need to know where and why and with that maybe
trim xenodm's bloat.

DisplayManager:
rpath: open(2) /etc/X11/xenodm/xenodm-config
cpath: unlink(2) d->authFile
proc: kill(2)

Session:
rpath: open(2) /etc/fbtab
wpath/cpath: open(2) d->authFile
fattr: chmod(2) d->authFile
dns: sysctl(2) for name resolution
proc: kill(2)
exec: execve(2) /etc/X11/xenodm/TakeConsole
id: setuid(2)

Index: dm.c
===================================================================
RCS file: /cvs/xenocara/app/xenodm/xenodm/dm.c,v
retrieving revision 1.6
diff -u -p -u -r1.6 dm.c
--- dm.c        11 Jul 2018 16:57:04 -0000      1.6
+++ dm.c        31 Oct 2018 15:15:49 -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: session.c
===================================================================
RCS file: /cvs/xenocara/app/xenodm/xenodm/session.c,v
retrieving revision 1.12
diff -u -p -u -r1.12 session.c
--- session.c   11 Jul 2018 20:28:41 -0000      1.12
+++ session.c   31 Oct 2018 15:15:49 -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;
     }
 }

----- End forwarded message -----

Reply via email to