path: root/xlators
diff options
authorYaniv Kaul <>2018-08-21 20:29:17 +0300
committerAmar Tumballi <>2018-08-31 06:17:20 +0000
commitcd1051789361bd07e248baf1bf0fbbe479cd4ae1 (patch)
tree97a0b5bc7b3f93dd3ed79dee38e106c987d73001 /xlators
parenta1d61242baed1c2078707c401632719e756fcacb (diff)
NFS server (mount3.c, nfs-inodes.c): strncpy()->sprintf(), reduce strlen()'s
xlators/nfs/server/src/mount3.c xlators/nfs/server/src/nfs-inodes.c strncpy may not be very efficient for short strings copied into a large buffer: If the length of src is less than n, strncpy() writes additional null bytes to dest to ensure that a total of n bytes are written. Instead, use snprintf(). Compile-tested only! Change-Id: Ibe74ccdb67434e9a10fc1f21c0b4cd5e4b8cb589 updates: bz#1193929 Signed-off-by: Yaniv Kaul <>
Diffstat (limited to 'xlators')
2 files changed, 8 insertions, 9 deletions
diff --git a/xlators/nfs/server/src/mount3.c b/xlators/nfs/server/src/mount3.c
index 85fc1d608c6..187c975081d 100644
--- a/xlators/nfs/server/src/mount3.c
+++ b/xlators/nfs/server/src/mount3.c
@@ -353,14 +353,14 @@ dont_add:
ret = gf_store_retrieve_value (sh, key, &value);
if (ret)
- strncpy (me->hostname, value, MNTPATHLEN);
+ snprintf (me->hostname, MNTPATHLEN, "%s", value);
GF_FREE (value);
snprintf (key, 11 + MNTPATHLEN, "mountpoint-%d", idx);
ret = gf_store_retrieve_value (sh, key, &value);
if (ret)
- strncpy (me->exname, value, MNTPATHLEN);
+ snprintf (me->exname, MNTPATHLEN, "%s", value);
GF_FREE (value);
@@ -599,7 +599,7 @@ mnt3svc_update_mountlist (struct mount3_state *ms, rpcsvc_request_t *req,
update_rmtab = mount_open_rmtab (nfs->rmtab, &sh);
- strncpy (me->exname, expname, MNTPATHLEN);
+ snprintf (me->exname, MNTPATHLEN, "%s", expname);
/* Sometimes we don't care about the full path
* so a NULL value for fullpath is valid.
@@ -1561,7 +1561,7 @@ mnt3_resolve_subdir (rpcsvc_request_t *req, struct mount3_state *ms,
mres->mstate = ms;
mres->req = req;
- strncpy (mres->remainingdir, subdir, MNTPATHLEN);
+ snprintf (mres->remainingdir, MNTPATHLEN, "%s", subdir);
gf_path_strip_trailing_slashes (mres->remainingdir);
if (gf_nfs_dvm_off (nfs_state (ms->nfsx)))
@@ -3067,8 +3067,8 @@ mount3udp_add_mountlist (xlator_t *nfsx, char *host, char *export)
if (!me)
return -1;
- strncpy (me->exname, export, MNTPATHLEN);
- strncpy (me->hostname, host, MNTPATHLEN);
+ snprintf (me->exname, MNTPATHLEN, "%s", export);
+ snprintf (me->hostname, MNTPATHLEN, "%s", host);
INIT_LIST_HEAD (&me->mlist);
LOCK (&ms->mountlock);
diff --git a/xlators/nfs/server/src/nfs-inodes.c b/xlators/nfs/server/src/nfs-inodes.c
index 515622a3d5c..91703c70a1f 100644
--- a/xlators/nfs/server/src/nfs-inodes.c
+++ b/xlators/nfs/server/src/nfs-inodes.c
@@ -43,11 +43,10 @@ nfl_inodes_init (struct nfs_fop_local *nfl, inode_t *inode, inode_t *parent,
nfl->newparent = inode_ref (newparent);
if (name)
- strncpy (nfl->path, name, NFS_NAME_MAX);
+ snprintf (nfl->path, NFS_NAME_MAX, "%s", name);
if (newname)
- strncpy (nfl->newpath, newname, NFS_NAME_MAX);
+ snprintf (nfl->newpath, NFS_NAME_MAX, "%s", newname);