I find myself disagreeing, since now there is a tocto race.

The pathname is being translated in userland rather than letting
the kernel do it.

>Hello, this is my first patch.
>
>vnconfig(8) should print absolute pathnames of configured disk images,
>instead of repeating whatever was given to -c.
>
>Contrived example:
>
>$ doas vnconfig -l
>vnd0: covering ../images/../images/foo on sd4l, inode 15301672
>vnd1: covering foo on sd4l, inode 15562887
>vnd2: covering foo on sd4l, inode 15562888
>
>With this patch:
>
>$ doas vnconfig -l           
>vnd0: covering /home/user/images/foo on sd4l, inode 15301672
>vnd1: covering /home/user/images/a/foo on sd4l, inode 15562887
>vnd2: covering /home/user/images/b/foo on sd4l, inode 15562888
>
>Index: mount_vnd.c
>===================================================================
>RCS file: /cvs/src/sbin/mount_vnd/mount_vnd.c,v
>retrieving revision 1.20
>diff -u -p -r1.20 mount_vnd.c
>--- mount_vnd.c        24 Jan 2016 06:32:33 -0000      1.20
>+++ mount_vnd.c        16 Sep 2018 06:05:02 -0000
>@@ -143,6 +143,7 @@ main(int argc, char **argv)
> 
>       if (action == VND_CONFIG && argc == 2) {
>               int ind_raw, ind_reg;
>+              char realfile[PATH_MAX];
> 
>               if (opt_k || opt_K) {
>                       fprintf(stderr,
>@@ -167,7 +168,12 @@ main(int argc, char **argv)
>                       ind_raw = 0;
>                       ind_reg = 1;
>               }
>-              rv = config(argv[ind_raw], argv[ind_reg], action, dp, key,
>+
>+              if (realpath(argv[ind_reg], realfile) == NULL) {
>+                      err(1, "invalid file path");
>+              }
>+      
>+              rv = config(argv[ind_raw], realfile, action, dp, key,
>                   keylen);
>       } else if (action == VND_UNCONFIG && argc == 1)
>               rv = config(argv[0], NULL, action, NULL, NULL, 0);
>
>

Reply via email to