On Mon, Sep 06, 2021 at 09:38:04AM +0200, Matthieu Herrb wrote:
> On Mon, Sep 06, 2021 at 04:53:36PM +1000, Damien Miller wrote:
> > this breaks xterm on freshly-installed systems:
> > 
> > keroppi$ env DISPLAY=:0 xterm
> > xterm: unveil
> > 
> > from ktrace, it looks like it is failing when trying to unveil a
> > nonexistent directory:
> > 
> >  93248 xterm    NAMI  "/home/djm/.cache/fontconfig"
> >  93248 xterm    RET   unveil -1 errno 2 No such file or directory
> > 
> > Maybe it should stat/access the paths first? Or more stuff in skel?
> 
> Either add .cache to skel or ignore ENOENT for dirs in home.
> 
> I'm wondering if /usr/local/share/fonts/ is also going to be a problem
> and if I should extend the ENOENT checks for the system
> directories...

The following are fine with base,xbase sets installed:
- /usr/X11R6
- /var/cache/fontconfig
- etc_utmp
- etc_wtmp

But the other might failed without ports installed:
- /usr/local/share/fonts
- /usr/local/share/icons
- /usr/local/lib/X11/icons


> Index: main.c
> ===================================================================
> RCS file: /cvs/OpenBSD/xenocara/app/xterm/main.c,v
> retrieving revision 1.50
> diff -u -p -u -r1.50 main.c
> --- main.c    2 Sep 2021 09:31:38 -0000       1.50
> +++ main.c    6 Sep 2021 07:37:42 -0000
> @@ -2910,18 +2910,18 @@ main(int argc, char *argv[]ENVP_ARG)
>                  char homefile[PATH_MAX];
>  
>                  snprintf(homefile, sizeof homefile, "%s/.fonts", env);
> -                if (unveil(homefile, "r") == -1) {
> +                if (unveil(homefile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
>                  snprintf(homefile, sizeof homefile, "%s/.cache/fontconfig",
>                           env);
> -                if (unveil(homefile, "r") == -1) {
> +                if (unveil(homefile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
>                  snprintf(homefile, sizeof homefile, "%s/.icons", env);
> -                if (unveil(homefile, "r") == -1) {
> +                if (unveil(homefile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
> @@ -2930,12 +2930,12 @@ main(int argc, char *argv[]ENVP_ARG)
>                  char xdgfile[PATH_MAX];
>  
>                  snprintf(xdgfile, sizeof xdgfile, "%s/fontconfig", env);
> -                if (unveil(xdgfile, "r") == -1) {
> +                if (unveil(xdgfile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
>                  snprintf(xdgfile, sizeof xdgfile, "%s/icons", env);
> -                if (unveil(xdgfile, "r") == -1) {
> +                if (unveil(xdgfile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
> @@ -2944,12 +2944,12 @@ main(int argc, char *argv[]ENVP_ARG)
>                  char xdgfile[PATH_MAX];
>  
>                  snprintf(xdgfile, sizeof xdgfile, "%s/fontconfig", env);
> -                if (unveil(xdgfile, "r") == -1) {
> +                if (unveil(xdgfile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
>                  snprintf(xdgfile, sizeof xdgfile, "%s/icons", env);
> -                if (unveil(xdgfile, "r") == -1) {
> +                if (unveil(xdgfile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
> @@ -2958,7 +2958,7 @@ main(int argc, char *argv[]ENVP_ARG)
>                  char xdgfile[PATH_MAX];
>  
>                  snprintf(xdgfile, sizeof xdgfile, "%s/fontconfig", env);
> -                if (unveil(xdgfile, "r") == -1) {
> +                if (unveil(xdgfile, "r") == -1 && errno != ENOENT) {
>                      xtermWarning("unveil\n");
>                      exit(1);
>                  }
> 
> > 
> > On Thu, 2 Sep 2021, Theo de Raadt wrote:
> > 
> > > hurray
> > > 
> > > Matthieu Herrb <matth...@cvs.openbsd.org> wrote:
> > > 
> > > > CVSROOT:        /cvs
> > > > Module name:    xenocara
> > > > Changes by:     matth...@cvs.openbsd.org        2021/09/02 03:31:38
> > > > 
> > > > Modified files:
> > > >         app/xterm      : main.c 
> > > > 
> > > > Log message:
> > > > Unveil paths needed by xterm at run-time. work with tb@ and deraadt@
> > > > 
> > > > Only in (default) case where there are no exec-formatted or
> > > > exec-selected resources set. In those case the commands and their
> > > > arguments could be anywhere.
> > > > 
> > > 
> > > 
> 
> -- 
> Matthieu Herrb
> 

-- 
Sebastien Marie

Reply via email to