diff options
author | sterlingjensen <[email protected]> | 2020-11-10 17:50:44 -0600 |
---|---|---|
committer | GitHub <[email protected]> | 2020-11-10 15:50:44 -0800 |
commit | a4ae4998cbae3bb451642272738ab4d59b9714c4 (patch) | |
tree | e94430fcab27bb829098ed6bf6de1648c5e2bbea /tests | |
parent | b60ae3a5dc42bc62adb1507eb8785cf6fee57912 (diff) |
Fix memleak in cmd/mount_zfs.c
Convert dynamic allocation to static buffer, simplify parse_dataset
function return path. Add tests specific to the mount helper.
Reviewed-by: Mateusz Guzik <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Sterling Jensen <[email protected]>
Closes #11098
Diffstat (limited to 'tests')
5 files changed, 149 insertions, 1 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index ac4d6af1c..d8312afd3 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -47,7 +47,8 @@ tests = ['zfs_003_neg'] tags = ['functional', 'cli_root', 'zfs'] [tests/functional/cli_root/zfs_mount:Linux] -tests = ['zfs_mount_006_pos', 'zfs_mount_008_pos', 'zfs_multi_mount'] +tests = ['zfs_mount_006_pos', 'zfs_mount_008_pos', 'zfs_mount_013_pos', + 'zfs_mount_014_neg', 'zfs_multi_mount'] tags = ['functional', 'cli_root', 'zfs_mount'] [tests/functional/cli_root/zfs_share:Linux] diff --git a/tests/zfs-tests/include/commands.cfg b/tests/zfs-tests/include/commands.cfg index 21d1950e7..2b81e1c19 100644 --- a/tests/zfs-tests/include/commands.cfg +++ b/tests/zfs-tests/include/commands.cfg @@ -184,6 +184,7 @@ export ZFS_FILES='zdb arc_summary arcstat dbufstat + mount.zfs zed zgenhostid zstream diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile.am b/tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile.am index 37c094238..8c90b2e75 100644 --- a/tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile.am +++ b/tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile.am @@ -14,6 +14,8 @@ dist_pkgdata_SCRIPTS = \ zfs_mount_010_neg.ksh \ zfs_mount_011_neg.ksh \ zfs_mount_012_pos.ksh \ + zfs_mount_013_pos.ksh \ + zfs_mount_014_neg.ksh \ zfs_mount_all_001_pos.ksh \ zfs_mount_all_fail.ksh \ zfs_mount_all_mountpoints.ksh \ diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_013_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_013_pos.ksh new file mode 100755 index 000000000..9a62ffb02 --- /dev/null +++ b/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_013_pos.ksh @@ -0,0 +1,76 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# +# CDDL HEADER END +# + +. $STF_SUITE/include/libtest.shlib +. $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib + +# +# DESCRIPTION: +# Verify zfs mount helper functions for both devices and pools. +# + +verify_runnable "both" + +set -A vdevs $(get_disklist_fullpath $TESTPOOL) +vdev=${vdevs[0]} +mntpoint=$TESTDIR/$TESTPOOL +helper="mount.zfs -o zfsutil" +fs=$TESTPOOL/$TESTFS + +function cleanup +{ + log_must force_unmount $vdev + [[ -d $mntpoint ]] && log_must rm -rf $mntpoint + return 0 +} +log_onexit cleanup + +log_note "Verify zfs mount helper functions for both devices and pools" + +# Ensure that the ZFS filesystem is unmounted +force_unmount $fs +log_must mkdir -p $mntpoint + +log_note "Verify '<dataset> <path>'" +log_must $helper $fs $mntpoint +log_must ismounted $fs +force_unmount $fs + +log_note "Verify '\$PWD/<pool> <path>' prefix workaround" +log_must $helper $PWD/$fs $mntpoint +log_must ismounted $fs +force_unmount $fs + +log_note "Verify '-f <dataset> <path>' fakemount" +log_must $helper -f $fs $mntpoint +log_mustnot ismounted $fs + +log_note "Verify '-o ro -v <dataset> <path>' verbose RO" +log_must ${helper},ro -v $fs $mntpoint +log_must ismounted $fs +force_unmount $fs + +log_note "Verify '<device> <path>'" +log_must $helper $vdev $mntpoint +log_must ismounted $mntpoint +log_must umount $TESTPOOL + +log_note "Verify '-o abc -s <device> <path>' sloppy option" +log_must ${helper},abc -s $vdev $mntpoint +log_must ismounted $mntpoint +log_must umount $TESTPOOL + +log_pass "zfs mount helper correctly handles both device and pool strings"
\ No newline at end of file diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_014_neg.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_014_neg.ksh new file mode 100755 index 000000000..5cf0bc7b3 --- /dev/null +++ b/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_014_neg.ksh @@ -0,0 +1,68 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# +# CDDL HEADER END +# + +. $STF_SUITE/include/libtest.shlib +. $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib + +# +# DESCRIPTION: +# Verify zfs mount helper failure on known bad parameters +# + +verify_runnable "both" + +set -A vdevs $(get_disklist_fullpath $TESTPOOL) +vdev=${vdevs[0]} + +mntpoint="$(get_prop mountpoint $TESTPOOL)" +helper="mount.zfs -o zfsutil" +fs=$TESTPOOL/$TESTFS + +function cleanup +{ + log_must force_unmount $vdev + return 0 +} +log_onexit cleanup + +log_note "Verify zfs mount helper failure on known bad parameters" + +# Ensure that the ZFS filesystem is unmounted. +force_unmount $fs + +log_note "Verify failure without '-o zfsutil'" +log_mustnot mount.zfs $fs $mntpoint + +log_note "Verify '-o abc <device> <path>' bad option fails" +log_mustnot ${helper},abc $vdev $mntpoint + +log_note "Verify '\$NONEXISTFSNAME <path>' fails" +log_mustnot $helper $NONEXISTFSNAME $mntpoint + +log_note "Verify '<dataset> (\$NONEXISTFSNAME|/dev/null)' fails" +log_mustnot $helper $fs $NONEXISTFSNAME +log_mustnot $helper $fs /dev/null + +log_note "Verify '/dev/null <path>' fails" +log_mustnot $helper /dev/null $mntpoint + +log_note "Verify '[device|pool]' fails" +log_mustnot mount.zfs +log_mustnot $helper +log_mustnot $helper $vdev +log_mustnot $helper $TESTPOOL + +log_pass "zfs mount helper fails when expected"
\ No newline at end of file |