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 <ykaul@redhat.com>
This commit is contained in:
parent
5acb74d7da
commit
036327d9e9
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user