From 0b78aeae927833de580e140375a15ea5ea9d924a Mon Sep 17 00:00:00 2001 From: BearBabyLiu Date: Fri, 30 Sep 2016 04:33:09 +0800 Subject: [PATCH] Fix coverity defects: CID 147443, 147656, 147655, 147441, 147653 coverity scan CID:147443, Type: Buffer not null terminated coverity scan CID:147656, Type: Copy into fixed size buffer coverity scan CID:147655, Type: Copy into fixed size buffer coverity scan CID:147441, Type: Buffer not null terminated coverity scan CID:147653, Type: Copy into fixed size buffer Reviewed-by: Richard Laager Reviewed-by: Brian Behlendorf Signed-off-by: liuhuang Closes #5165 --- cmd/zfs/zfs_main.c | 2 +- cmd/zinject/zinject.c | 2 +- lib/libzfs/libzfs_changelist.c | 3 ++- lib/libzfs/libzfs_diff.c | 2 +- lib/libzfs/libzfs_util.c | 4 ++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c index a4ffb1f447..bf9a792480 100644 --- a/cmd/zfs/zfs_main.c +++ b/cmd/zfs/zfs_main.c @@ -6768,7 +6768,7 @@ zfs_do_bookmark(int argc, char **argv) * Snapshot name begins with @. * Default to same fs as bookmark. */ - (void) strncpy(snapname, argv[1], sizeof (snapname)); + (void) strlcpy(snapname, argv[1], sizeof (snapname)); *strchr(snapname, '#') = '\0'; (void) strlcat(snapname, argv[0], sizeof (snapname)); } else { diff --git a/cmd/zinject/zinject.c b/cmd/zinject/zinject.c index 0ce50277df..396c52a0c8 100644 --- a/cmd/zinject/zinject.c +++ b/cmd/zinject/zinject.c @@ -548,7 +548,7 @@ register_handler(const char *pool, int flags, zinject_record_t *record, { zfs_cmd_t zc = {"\0"}; - (void) strcpy(zc.zc_name, pool); + (void) strlcpy(zc.zc_name, pool, sizeof (zc.zc_name)); zc.zc_inject_record = *record; zc.zc_guid = flags; diff --git a/lib/libzfs/libzfs_changelist.c b/lib/libzfs/libzfs_changelist.c index 5e007c0f48..ed11bb8227 100644 --- a/lib/libzfs/libzfs_changelist.c +++ b/lib/libzfs/libzfs_changelist.c @@ -304,7 +304,8 @@ changelist_rename(prop_changelist_t *clp, const char *src, const char *dst) remove_mountpoint(cn->cn_handle); (void) strlcpy(newname, dst, sizeof (newname)); - (void) strcat(newname, cn->cn_handle->zfs_name + strlen(src)); + (void) strlcat(newname, cn->cn_handle->zfs_name + strlen(src), + sizeof (newname)); (void) strlcpy(cn->cn_handle->zfs_name, newname, sizeof (cn->cn_handle->zfs_name)); diff --git a/lib/libzfs/libzfs_diff.c b/lib/libzfs/libzfs_diff.c index f5c799529c..419189aa8d 100644 --- a/lib/libzfs/libzfs_diff.c +++ b/lib/libzfs/libzfs_diff.c @@ -425,7 +425,7 @@ differ(void *arg) if ((ofp = fdopen(di->outputfd, "w")) == NULL) { di->zerr = errno; - strncpy(di->errbuf, strerror(errno), sizeof (di->errbuf)); + strlcpy(di->errbuf, strerror(errno), sizeof (di->errbuf)); (void) close(di->datafd); return ((void *)-1); } diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c index 4988e8115d..8fec782838 100755 --- a/lib/libzfs/libzfs_util.c +++ b/lib/libzfs/libzfs_util.c @@ -1107,8 +1107,8 @@ zfs_strcmp_pathname(char *name, char *cmp, int wholedisk) dup = strdup(cmp); dir = strtok(dup, "/"); while (dir) { - strcat(cmp_name, "/"); - strcat(cmp_name, dir); + strlcat(cmp_name, "/", sizeof (cmp_name)); + strlcat(cmp_name, dir, sizeof (cmp_name)); dir = strtok(NULL, "/"); } free(dup);