summaryrefslogtreecommitdiffstats
path: root/cmd/zpool
diff options
context:
space:
mode:
authorGeLiXin <[email protected]>2016-10-11 06:30:22 +0800
committerBrian Behlendorf <[email protected]>2016-10-10 15:30:22 -0700
commit8c8cf8a2d8567d00a93963b1d59a7bdc8cede06a (patch)
treea408d5a831505c8cfa36be29a64db0e7f6e4de82 /cmd/zpool
parentd33931a83a33db4034186dfda6dcdd294ace2c75 (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.c11
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