]> git.proxmox.com Git - mirror_zfs.git/commitdiff
zpool_valid_proplist() should not corrupt nvpair name string on error
authorRichard Yao <richard.yao@alumni.stonybrook.edu>
Sat, 11 Mar 2023 20:25:04 +0000 (15:25 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 14 Mar 2023 22:25:40 +0000 (15:25 -0700)
The strings returned from parsing nvlists should be immutable, but to
simplify the code when we want a substring from it, we sometimes will
write a NULL into it and then restore the value afterward. Provided
there is no concurrent access, this is okay, unless we forget to restore
the value afterward. This was caught when constifying string functions
related to nvlists.

Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14612

lib/libzfs/libzfs_pool.c

index 82965f8b993ab070a1d4f08d9c9fc689dc6d73b4..ac25ecf9e1aa1b07328524c60eb57a84eac43e1a 100644 (file)
@@ -694,6 +694,7 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname,
                        if (strval[0] != '\0' &&
                            (stat64(strval, &statbuf) != 0 ||
                            !S_ISDIR(statbuf.st_mode))) {
+                               *slash = '/';
                                zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
                                    "'%s' is not a valid directory"),
                                    strval);