From 036327d9e963c84a5222f8d1c7598ab36ad46a4b Mon Sep 17 00:00:00 2001 From: Yaniv Kaul Date: Tue, 21 Aug 2018 18:21:25 +0300 Subject: glfs-fops.c, glfs.c: strncpy() -> sprintf(), reduce strlen()'s 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(). Also, save the result of strlen() and re-use it when possible. Compile-tested only! Change-Id: I4ecfb359cf0efaafeab245a8138f526b21613231 updates: bz#1193929 Signed-off-by: Yaniv Kaul --- api/src/glfs-fops.c | 6 ++---- api/src/glfs.c | 6 ++++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'api/src') diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index ee4271fb4dc..611cb14d9eb 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -3205,8 +3205,7 @@ gf_dirent_to_dirent (gf_dirent_t *gf_dirent, struct dirent *dirent) dirent->d_namlen = strlen (gf_dirent->d_name); #endif - strncpy (dirent->d_name, gf_dirent->d_name, NAME_MAX); - dirent->d_name[NAME_MAX] = 0; + snprintf (dirent->d_name, NAME_MAX, "%s", gf_dirent->d_name); } @@ -4679,8 +4678,7 @@ retry: goto out; if (loc.path) { - strncpy (retpath, loc.path, PATH_MAX); - retpath[PATH_MAX] = 0; + snprintf (retpath, PATH_MAX, "%s", loc.path); } out: diff --git a/api/src/glfs.c b/api/src/glfs.c index 9b8cd4f2d2f..8ae3af61edb 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -1602,6 +1602,7 @@ pub_glfs_sysrq (struct glfs *fs, char sysrq) { glusterfs_ctx_t *ctx = NULL; int ret = 0; + int msg_len; char msg[1024] = {0,}; /* should not exceed 1024 chars */ if (!fs || !fs->ctx) { @@ -1618,8 +1619,9 @@ pub_glfs_sysrq (struct glfs *fs, char sysrq) struct glfs_sysrq_help *usage = NULL; for (usage = glfs_sysrq_help; usage->sysrq; usage++) { - snprintf (msg + strlen (msg), /* append to msg */ - sizeof (msg) - strlen (msg) - 2, + msg_len = strlen(msg); + snprintf (msg + msg_len, /* append to msg */ + sizeof (msg) - msg_len - 2, /* - 2 for the " " + terminating \0 */ " %s", usage->msg); } -- cgit