On Tue, Aug 21, 2018 at 09:51:52PM -0700, Carlos Cardenas wrote:
> Patch to unveil vmctl.
>
> Comments/OK?
>
> +--+
> Carlos
reads ok to me
> Index: main.c
> ===================================================================
> RCS file: /home/los/cvs/src/usr.sbin/vmctl/main.c,v
> retrieving revision 1.39
> diff -u -p -r1.39 main.c
> --- main.c 12 Jul 2018 14:53:37 -0000 1.39
> +++ main.c 18 Aug 2018 23:22:39 -0000
> @@ -160,7 +160,7 @@ parse(int argc, char *argv[])
>
> if (!ctl->has_pledge) {
> /* pledge(2) default if command doesn't have its own pledge */
> - if (pledge("stdio rpath exec unix getpw", NULL) == -1)
> + if (pledge("stdio rpath exec unix getpw unveil", NULL) == -1)
> err(1, "pledge");
> }
> if (ctl->main(&res, argc, argv) != 0)
> @@ -185,6 +185,8 @@ vmmaction(struct parse_result *res)
> unsigned int flags;
>
> if (ctl_sock == -1) {
> + if (unveil(SOCKET_NAME, "r") == -1)
> + err(1, "unveil");
> if ((ctl_sock = socket(AF_UNIX,
> SOCK_STREAM|SOCK_CLOEXEC, 0)) == -1)
> err(1, "socket");
> @@ -477,6 +479,10 @@ ctl_create(struct parse_result *res, int
>
> paths[0] = argv[1];
> paths[1] = NULL;
> +
> + if (unveil(paths[0], "rwc") == -1)
> + err(1, "unveil");
> +
> if (pledge("stdio rpath wpath cpath", NULL) == -1)
> err(1, "pledge");
> argc--;
> @@ -759,6 +765,8 @@ __dead void
> ctl_openconsole(const char *name)
> {
> closefrom(STDERR_FILENO + 1);
> + if (unveil(VMCTL_CU, "x") == -1)
> + err(1, "unveil");
> execl(VMCTL_CU, VMCTL_CU, "-l", name, "-s", "115200", (char *)NULL);
> err(1, "failed to open the console");
> }