summaryrefslogtreecommitdiff
path: root/usr/src/lib/libbe
diff options
context:
space:
mode:
authorMatthew Ahrens <mahrens@delphix.com>2016-06-09 10:38:27 -0400
committerMatthew Ahrens <mahrens@delphix.com>2016-06-09 15:55:53 -0400
commit9adfa60d484ce2435f5af77cc99dcd4e692b6660 (patch)
tree8317e936fc768f79567bf498076c3fbab777adc6 /usr/src/lib/libbe
parent0c779ad424a92a84d1e07d47cab7f8009189202b (diff)
downloadillumos-joyent-9adfa60d484ce2435f5af77cc99dcd4e692b6660.tar.gz
6314 buffer overflow in dsl_dataset_name
Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com> Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/lib/libbe')
-rw-r--r--usr/src/lib/libbe/common/be_create.c14
-rw-r--r--usr/src/lib/libbe/common/be_mount.c9
-rw-r--r--usr/src/lib/libbe/common/be_utils.c8
-rw-r--r--usr/src/lib/libbe/common/libbe_priv.h6
4 files changed, 16 insertions, 21 deletions
diff --git a/usr/src/lib/libbe/common/be_create.c b/usr/src/lib/libbe/common/be_create.c
index 6ea2324200..6aea6e4112 100644
--- a/usr/src/lib/libbe/common/be_create.c
+++ b/usr/src/lib/libbe/common/be_create.c
@@ -22,7 +22,7 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2014, 2015 by Delphix. All rights reserved.
* Copyright (c) 2016 Martin Matuska. All rights reserved.
*/
@@ -2275,7 +2275,7 @@ be_clone_fs_callback(zfs_handle_t *zhp, void *data)
be_transaction_data_t *bt = data;
zfs_handle_t *zhp_ss = NULL;
char prop_buf[MAXPATHLEN];
- char zhp_name[ZFS_MAXNAMELEN];
+ char zhp_name[ZFS_MAX_DATASET_NAME_LEN];
char clone_ds[MAXPATHLEN];
char ss[MAXPATHLEN];
int ret = 0;
@@ -2395,7 +2395,7 @@ be_send_fs_callback(zfs_handle_t *zhp, void *data)
{
be_transaction_data_t *bt = data;
recvflags_t flags = { 0 };
- char zhp_name[ZFS_MAXNAMELEN];
+ char zhp_name[ZFS_MAX_DATASET_NAME_LEN];
char clone_ds[MAXPATHLEN];
sendflags_t send_flags = { 0 };
int pid, status, retval;
@@ -2761,8 +2761,8 @@ static int
be_demote_get_one_clone(zfs_handle_t *zhp, void *data)
{
be_demote_data_t *dd = data;
- char origin[ZFS_MAXNAMELEN];
- char ds_path[ZFS_MAXNAMELEN];
+ char origin[ZFS_MAX_DATASET_NAME_LEN];
+ char ds_path[ZFS_MAX_DATASET_NAME_LEN];
if (zfs_get_type(zhp) != ZFS_TYPE_FILESYSTEM) {
ZFS_CLOSE(zhp);
@@ -2937,8 +2937,8 @@ be_prep_clone_send_fs(zfs_handle_t *zhp, be_transaction_data_t *bt,
char *clone_ds, int clone_ds_len)
{
zprop_source_t sourcetype;
- char source[ZFS_MAXNAMELEN];
- char zhp_name[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
+ char zhp_name[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[MAXPATHLEN];
char *child_fs = NULL;
char *zhp_mountpoint = NULL;
diff --git a/usr/src/lib/libbe/common/be_mount.c b/usr/src/lib/libbe/common/be_mount.c
index 03cb03b128..40daff4cd6 100644
--- a/usr/src/lib/libbe/common/be_mount.c
+++ b/usr/src/lib/libbe/common/be_mount.c
@@ -21,10 +21,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 EveryCity Ltd.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -1147,7 +1146,7 @@ be_mount_callback(zfs_handle_t *zhp, void *data)
{
zprop_source_t sourcetype;
const char *fs_name = zfs_get_name(zhp);
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
char *altroot = data;
char zhp_mountpoint[MAXPATHLEN];
char mountpoint[MAXPATHLEN];
@@ -1297,7 +1296,7 @@ be_unmount_callback(zfs_handle_t *zhp, void *data)
be_unmount_data_t *ud = data;
zprop_source_t sourcetype;
const char *fs_name = zfs_get_name(zhp);
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[MAXPATHLEN];
char *zhp_mountpoint;
int ret = 0;
@@ -2036,7 +2035,7 @@ static int
fix_mountpoint_callback(zfs_handle_t *zhp, void *data)
{
zprop_source_t sourcetype;
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[MAXPATHLEN];
char *zhp_mountpoint = NULL;
char *altroot = data;
diff --git a/usr/src/lib/libbe/common/be_utils.c b/usr/src/lib/libbe/common/be_utils.c
index 4841302db3..b92c32e527 100644
--- a/usr/src/lib/libbe/common/be_utils.c
+++ b/usr/src/lib/libbe/common/be_utils.c
@@ -21,11 +21,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 Toomas Soome <tsoome@me.com>
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
@@ -206,7 +204,7 @@ be_get_defaults(struct be_defaults *defaults)
const char *res = defread_r(BE_DFLT_BENAME_STARTS, defp);
if (res != NULL && res[0] != NULL) {
(void) strlcpy(defaults->be_deflt_bename_starts_with,
- res, ZFS_MAXNAMELEN);
+ res, ZFS_MAX_DATASET_NAME_LEN);
defaults->be_deflt_rpool_container = B_TRUE;
}
defclose_r(defp);
@@ -318,7 +316,7 @@ be_make_container_ds(const char *zpool, char *container_ds,
char *
be_make_name_from_ds(const char *dataset, char *rc_loc)
{
- char ds[ZFS_MAXNAMELEN];
+ char ds[ZFS_MAX_DATASET_NAME_LEN];
char *tok = NULL;
char *name = NULL;
struct be_defaults be_defaults;
diff --git a/usr/src/lib/libbe/common/libbe_priv.h b/usr/src/lib/libbe/common/libbe_priv.h
index cd5658f6d6..2e99204f22 100644
--- a/usr/src/lib/libbe/common/libbe_priv.h
+++ b/usr/src/lib/libbe/common/libbe_priv.h
@@ -21,11 +21,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 Toomas Soome <tsoome@me.com>
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
#ifndef _LIBBE_PRIV_H
@@ -137,7 +135,7 @@ typedef struct be_plcy_list {
struct be_defaults {
boolean_t be_deflt_rpool_container;
- char be_deflt_bename_starts_with[ZFS_MAXNAMELEN];
+ char be_deflt_bename_starts_with[ZFS_MAX_DATASET_NAME_LEN];
};
/* Library globals */