summaryrefslogtreecommitdiff
path: root/usr/src/lib/libzfs
diff options
context:
space:
mode:
authornd150628 <none@none>2006-07-25 15:31:56 -0700
committernd150628 <none@none>2006-07-25 15:31:56 -0700
commitf2fdf992e7f966d7f6d0c41679a1058bf225a936 (patch)
tree5d4e5eb16544b1755c8c39087350d057a5f97a93 /usr/src/lib/libzfs
parent690caf98b041282eb5e877f6b01b43f824d6795d (diff)
downloadillumos-gate-f2fdf992e7f966d7f6d0c41679a1058bf225a936.tar.gz
6451860 zfs rename' a filesystem|clone to its direct child will cause internal error
Diffstat (limited to 'usr/src/lib/libzfs')
-rw-r--r--usr/src/lib/libzfs/common/libzfs_dataset.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/usr/src/lib/libzfs/common/libzfs_dataset.c b/usr/src/lib/libzfs/common/libzfs_dataset.c
index 207d6bb6c2..5b766f7818 100644
--- a/usr/src/lib/libzfs/common/libzfs_dataset.c
+++ b/usr/src/lib/libzfs/common/libzfs_dataset.c
@@ -2947,6 +2947,15 @@ zfs_rename(zfs_handle_t *zhp, const char *target)
"datasets must be within same pool"));
return (zfs_error(hdl, EZFS_CROSSTARGET, errbuf));
}
+
+ /* new name cannot be a child of the current dataset name */
+ if (strncmp(parent, zhp->zfs_name,
+ strlen(zhp->zfs_name)) == 0) {
+ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+ "New dataset name cannot be a descendent of "
+ "current dataset name"));
+ return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf));
+ }
}
(void) snprintf(errbuf, sizeof (errbuf),