On Mon, Mar 15, 2021 at 02:11:50PM +0100, Anton Lindqvist wrote:
> On Thu, Mar 11, 2021 at 11:12:41AM -0700, Klemens Nanni wrote:
> > CVSROOT:    /cvs
> > Module name:        src
> > Changes by: k...@cvs.openbsd.org    2021/03/11 11:12:41
> > 
> > Modified files:
> >     usr.sbin/apmd  : apmd.c 
> > 
> > Log message:
> > Use unveil(2)
> > 
> > Pledge is not possible due to the ioctls, but as apmd hoists both the
> > control socket and apm device early at startup and only ever possibly
> > executes scripts under /etc/apm/, hiding the rest of the filesystem
> > becomes easy.
> > 
> > Technically, only "x" is required to traverse the directory and run
> > scripts, but apmd carefully access(2) each script, which requires
> > the read bit regardless of the permission bits being tested.
> > 
> > OK mestre
> > 
> 
> System accounting started to report unveil violations after this commit:
> 
>       Purging accounting records:
>       apmd       -FU     root                             __         0.06 
> secs Mon Mar 15 00:15 (8:59:20.00)
> 
> This is what ktrace shows:
> 
>       71448 apmd     CALL  access(0x66348711fa,0x5<X_OK|R_OK>)
>       71448 apmd     NAMI  "/etc/apm/resume"
>       71448 apmd     RET   access -1 errno 2 No such file or directory
>       71448 apmd     CALL  write(2,0x7f7ffffcf630,0x31)
>       71448 apmd     GIO   fd 2 wrote 49 bytes
>               "do_etc_file(): cannot access file /etc/apm/resume"
> 
> Only /etc/apm/suspend is present on this machine.
> 

On program exit, I have the following:

 40924 apmd     CALL  lstat(0xfb8715af2f0,0x7f7ffffc01d0)
 40924 apmd     NAMI  "/var/run/apmdev"
 40924 apmd     RET   lstat -1 errno 2 No such file or directory

apmd is trying to remove the socket on exit:
- via atexit(sockunlink), registered in bind_socket() function
- via signal catch (see sigexit() function)

but the socket isn't unveiled.
-- 
Sebastien Marie

Reply via email to