diff options
author | GeLiXin <[email protected]> | 2016-10-11 06:30:22 +0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-10-10 15:30:22 -0700 |
commit | 8c8cf8a2d8567d00a93963b1d59a7bdc8cede06a (patch) | |
tree | a408d5a831505c8cfa36be29a64db0e7f6e4de82 /cmd/zpool | |
parent | d33931a83a33db4034186dfda6dcdd294ace2c75 (diff) |
Fix coverity defects: CID 147639
When array is passed as a parameter it degenerates into a
pointer so the sizeof(path) in is_shorthand_path() and always
get return value of 8, instead of the string length we want.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: GeLiXin <[email protected]>
Closes #5198
Diffstat (limited to 'cmd/zpool')
-rw-r--r-- | cmd/zpool/zpool_vdev.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/cmd/zpool/zpool_vdev.c b/cmd/zpool/zpool_vdev.c index b0db5e873..91fe01300 100644 --- a/cmd/zpool/zpool_vdev.c +++ b/cmd/zpool/zpool_vdev.c @@ -536,19 +536,19 @@ is_whole_disk(const char *path) * (minus the slice number). */ static int -is_shorthand_path(const char *arg, char *path, +is_shorthand_path(const char *arg, char *path, size_t path_size, struct stat64 *statbuf, boolean_t *wholedisk) { int error; - error = zfs_resolve_shortname(arg, path, MAXPATHLEN); + error = zfs_resolve_shortname(arg, path, path_size); if (error == 0) { *wholedisk = is_whole_disk(path); if (*wholedisk || (stat64(path, statbuf) == 0)) return (0); } - strlcpy(path, arg, sizeof (path)); + strlcpy(path, arg, path_size); memset(statbuf, 0, sizeof (*statbuf)); *wholedisk = B_FALSE; @@ -658,9 +658,10 @@ make_leaf_vdev(nvlist_t *props, const char *arg, uint64_t is_log) } /* After is_whole_disk() check restore original passed path */ - strlcpy(path, arg, MAXPATHLEN); + strlcpy(path, arg, sizeof (path)); } else { - err = is_shorthand_path(arg, path, &statbuf, &wholedisk); + err = is_shorthand_path(arg, path, sizeof (path), + &statbuf, &wholedisk); if (err != 0) { /* * If we got ENOENT, then the user gave us |