summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schwarz <[email protected]>2020-10-14 23:04:19 +0200
committerGitHub <[email protected]>2020-10-14 14:04:19 -0700
commit15a4ca4620b7a550902cdd998ff7949c354915e7 (patch)
tree0344a7e95a1d5474cf9b16a8b40189c59bba5dba
parent6a60ef80e2f00fca81f02a6eb93a520a29d6ae03 (diff)
Fix crash caused by invalid snapshot names in redactnvl
This is a follow up fix for commit 0fdd6106bb. The VERIFY is only true when we haven't hit an error code path. See added test case for a reproducer. Reviewed-by: Matthew Ahrens <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Christian Schwarz <[email protected]> Closes #11048
-rw-r--r--module/zfs/dmu_redact.c2
-rwxr-xr-xtests/zfs-tests/tests/functional/redacted_send/redacted_negative.ksh2
2 files changed, 3 insertions, 1 deletions
diff --git a/module/zfs/dmu_redact.c b/module/zfs/dmu_redact.c
index c53fba75c..225ec4053 100644
--- a/module/zfs/dmu_redact.c
+++ b/module/zfs/dmu_redact.c
@@ -1062,9 +1062,9 @@ dmu_redact_snap(const char *snapname, nvlist_t *redactnvl,
}
}
- VERIFY3P(nvlist_next_nvpair(redactnvl, pair), ==, NULL);
if (err != 0)
goto out;
+ VERIFY3P(nvlist_next_nvpair(redactnvl, pair), ==, NULL);
boolean_t resuming = B_FALSE;
zfs_bookmark_phys_t bookmark;
diff --git a/tests/zfs-tests/tests/functional/redacted_send/redacted_negative.ksh b/tests/zfs-tests/tests/functional/redacted_send/redacted_negative.ksh
index 56b990be1..432460fa2 100755
--- a/tests/zfs-tests/tests/functional/redacted_send/redacted_negative.ksh
+++ b/tests/zfs-tests/tests/functional/redacted_send/redacted_negative.ksh
@@ -56,6 +56,8 @@ done
log_mustnot zfs redact $sendfs@snap1
log_mustnot zfs redact $sendfs@snap1 book
log_mustnot zfs redact $sendfs#book1 book4 $clone1
+log_mustnot zfs redact $sendfs@snap1 book snap2 snap3
+log_mustnot zfs redact $sendfs@snap1 book @snap2 @snap3
log_mustnot eval "zfs send --redact $sendfs#book $sendfs@snap >/dev/null"
# Redaction snapshots not a descendant of tosnap