diff options
author | nd150628 <none@none> | 2006-07-25 15:31:56 -0700 |
---|---|---|
committer | nd150628 <none@none> | 2006-07-25 15:31:56 -0700 |
commit | f2fdf992e7f966d7f6d0c41679a1058bf225a936 (patch) | |
tree | 5d4e5eb16544b1755c8c39087350d057a5f97a93 /usr/src/lib/libzfs | |
parent | 690caf98b041282eb5e877f6b01b43f824d6795d (diff) | |
download | illumos-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.c | 9 |
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), |