summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/dmu_objset.c
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2016-06-10 12:03:01 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2016-06-10 12:03:01 +0000
commit301612afc3ef38a67f1adb329b36dae1bddf9034 (patch)
tree67480c0403a52379edfa7ff86522e0ea84bf3934 /usr/src/uts/common/fs/zfs/dmu_objset.c
parent3a73555a6bf9a4594d44713855d2396974e5f9ad (diff)
parentbc07d1fd58f705e3a6d5b418433e42cd8e42b7f1 (diff)
downloadillumos-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.c14
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);