diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-06-10 12:03:01 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-06-10 12:03:01 +0000 |
commit | 301612afc3ef38a67f1adb329b36dae1bddf9034 (patch) | |
tree | 67480c0403a52379edfa7ff86522e0ea84bf3934 /usr/src/uts/common/fs/zfs/dmu_objset.c | |
parent | 3a73555a6bf9a4594d44713855d2396974e5f9ad (diff) | |
parent | bc07d1fd58f705e3a6d5b418433e42cd8e42b7f1 (diff) | |
download | illumos-joyent-301612afc3ef38a67f1adb329b36dae1bddf9034.tar.gz |
[illumos-gate merge]
commit a76660dbabd3d3b161bdead081ce275af6966d2e
7083 create_ramdisk.sh need not check for inuse devices
commit 3f85b2aed8a5768f4c20db925cdf8fc072472037
7036 zvol_swap_004_pos test failed
commit 10e67aa0db0823d5464aafdd681f3c966155c68e
7082 bptree_iterate() passes wrong args to zfs_dbgmsg()
commit 2404c9e6b54f427b32dd0a2d46940d6a4c5299bc
7062 Connections remain in TIME_WAIT too long
7061 local TCP connections should be expediently purged from TIME_WAIT
commit 9adfa60d484ce2435f5af77cc99dcd4e692b6660
6314 buffer overflow in dsl_dataset_name
commit 0c779ad424a92a84d1e07d47cab7f8009189202b
7054 dmu_tx_hold_t should use refcount_t to track space
Diffstat (limited to 'usr/src/uts/common/fs/zfs/dmu_objset.c')
-rw-r--r-- | usr/src/uts/common/fs/zfs/dmu_objset.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/usr/src/uts/common/fs/zfs/dmu_objset.c b/usr/src/uts/common/fs/zfs/dmu_objset.c index 82c585487e..78ab9624d3 100644 --- a/usr/src/uts/common/fs/zfs/dmu_objset.c +++ b/usr/src/uts/common/fs/zfs/dmu_objset.c @@ -621,7 +621,7 @@ dmu_objset_refresh_ownership(objset_t *os, void *tag) { dsl_pool_t *dp; dsl_dataset_t *ds, *newds; - char name[MAXNAMELEN]; + char name[ZFS_MAX_DATASET_NAME_LEN]; ds = os->os_dsl_dataset; VERIFY3P(ds, !=, NULL); @@ -839,6 +839,9 @@ dmu_objset_create_check(void *arg, dmu_tx_t *tx) if (strchr(doca->doca_name, '@') != NULL) return (SET_ERROR(EINVAL)); + if (strlen(doca->doca_name) >= ZFS_MAX_DATASET_NAME_LEN) + return (SET_ERROR(ENAMETOOLONG)); + error = dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail); if (error != 0) return (error); @@ -923,6 +926,9 @@ dmu_objset_clone_check(void *arg, dmu_tx_t *tx) if (strchr(doca->doca_clone, '@') != NULL) return (SET_ERROR(EINVAL)); + if (strlen(doca->doca_clone) >= ZFS_MAX_DATASET_NAME_LEN) + return (SET_ERROR(ENAMETOOLONG)); + error = dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail); if (error != 0) return (error); @@ -962,7 +968,7 @@ dmu_objset_clone_sync(void *arg, dmu_tx_t *tx) const char *tail; dsl_dataset_t *origin, *ds; uint64_t obj; - char namebuf[MAXNAMELEN]; + char namebuf[ZFS_MAX_DATASET_NAME_LEN]; VERIFY0(dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail)); VERIFY0(dsl_dataset_hold(dp, doca->doca_origin, FTAG, &origin)); @@ -1973,7 +1979,7 @@ dmu_objset_get_user(objset_t *os) /* * Determine name of filesystem, given name of snapshot. - * buf must be at least MAXNAMELEN bytes + * buf must be at least ZFS_MAX_DATASET_NAME_LEN bytes */ int dmu_fsname(const char *snapname, char *buf) @@ -1981,7 +1987,7 @@ dmu_fsname(const char *snapname, char *buf) char *atp = strchr(snapname, '@'); if (atp == NULL) return (SET_ERROR(EINVAL)); - if (atp - snapname >= MAXNAMELEN) + if (atp - snapname >= ZFS_MAX_DATASET_NAME_LEN) return (SET_ERROR(ENAMETOOLONG)); (void) strlcpy(buf, snapname, atp - snapname + 1); return (0); |