this is actually good, I made it as minimal as possible so that it
wouldn't break for me, if it breaks for you we can start from there.
On 13:41 Sat 03 Nov , Matthieu Herrb wrote:
> On Fri, Nov 02, 2018 at 07:03:11PM +0000, Ricardo Mestre wrote:
> > 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.
>
> Hi,
>
> xenodm crashes if one logs out from the first session that was
> created. the pldege() call in StartDisplay is too strict.
>
> I've not had time to fully figure out if this can be fixed. Iirc I
> tried when I did the initial work on adding pledge to xenodm and it's
> not possible because of the code that creates the auth cookie and
> chown()s it to _x11.
>
> I didn't have time yet to do a more serious testing of the session
> pledge.
>
> >
> > 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 -----
>
> --
> Matthieu Herrb
>