On Wed, Jul 24, 2019 at 09:46:09PM +0200, Klemens Nanni wrote:
> Pledge is not possible due to the ioctls, but as it 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 we carefully access(2) each script, and that requires the
> read bit regardless of the permission bits being tested.
> Runs fine in daily usage on my X230 with suspend and resume scripts.
>
> Feedback? OK?
Found this diff still in my tree.
Any takers?
Index: apmd.c
===================================================================
RCS file: /cvs/src/usr.sbin/apmd/apmd.c,v
retrieving revision 1.99
diff -u -p -r1.99 apmd.c
--- apmd.c 28 Sep 2020 21:35:14 -0000 1.99
+++ apmd.c 4 Oct 2020 14:31:10 -0000
@@ -490,6 +490,11 @@ main(int argc, char *argv[])
if (statonly)
exit(0);
+ if (unveil(_PATH_APM_ETC_DIR, "rx") == -1)
+ err(1, "unveil");
+ if (unveil(NULL, NULL) == -1)
+ err(1, "unveil");
+
set_driver_messages(ctl_fd, APM_PRINT_OFF);
kq = kqueue();