diff options
| author | Yaniv Kaul <ykaul@redhat.com> | 2018-08-21 18:31:03 +0300 | 
|---|---|---|
| committer | Amar Tumballi <amarts@redhat.com> | 2018-08-24 16:26:36 +0000 | 
| commit | a2c562eb4046ce88c8c2f2d250b0079942e7f10a (patch) | |
| tree | 64e6733e2407126f546c824c474027f1a0540f81 | |
| parent | 938849a417727c85f1925dde641b3c6c54c71275 (diff) | |
{mount-common|fusermount|mount_darwin|umountd}.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.
- move from strlen to SLEN (sizeof() ) for const strings.
Compile-tested only!
Change-Id: I369209b36d8356c3fe00d32f8bf56e74cf9963db
updates: bz#1193929
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>
| -rw-r--r-- | contrib/fuse-lib/mount-common.c | 2 | ||||
| -rw-r--r-- | contrib/fuse-util/fusermount.c | 6 | ||||
| -rw-r--r-- | contrib/macfuse/mount_darwin.c | 2 | ||||
| -rw-r--r-- | contrib/umountd/umountd.c | 2 | 
4 files changed, 7 insertions, 5 deletions
diff --git a/contrib/fuse-lib/mount-common.c b/contrib/fuse-lib/mount-common.c index 6380dd8678e..cffd4c01ed5 100644 --- a/contrib/fuse-lib/mount-common.c +++ b/contrib/fuse-lib/mount-common.c @@ -32,7 +32,7 @@ mtab_needs_update (const char *mnt)          struct stat stbuf;          /* If mtab is within new mount, don't touch it */ -        if (strncmp (mnt, _PATH_MOUNTED, strlen (mnt)) == 0 && +        if (strncmp (mnt, _PATH_MOUNTED, sizeof (_PATH_MOUNTED) - 1) == 0 &&              _PATH_MOUNTED[strlen (mnt)] == '/')                  return 0; diff --git a/contrib/fuse-util/fusermount.c b/contrib/fuse-util/fusermount.c index a64d8e102ff..ff743f75a21 100644 --- a/contrib/fuse-util/fusermount.c +++ b/contrib/fuse-util/fusermount.c @@ -520,20 +520,22 @@ static void parse_line(char *line, int linenum)  static void read_conf(void)  { +	int  len;  	FILE *fp = fopen(FUSE_CONF, "r");  	if (fp != NULL) {  		int linenum = 1;  		char line[256];  		int isnewline = 1;  		while (fgets(line, sizeof(line), fp) != NULL) { +			len = strlen (line);  			if (isnewline) { -				if (strlen(line) && line[strlen(line)-1] == '\n') { +				if (len && line[len-1] == '\n') {  					strip_line(line);  					parse_line(line, linenum);  				} else {  					isnewline = 0;  				} -			} else if(strlen(line) && line[strlen(line)-1] == '\n') { +			} else if (len && line[len-1] == '\n') {  				fprintf(stderr, "%s: reading %s: line %i too long\n", progname, FUSE_CONF, linenum);  				isnewline = 1; diff --git a/contrib/macfuse/mount_darwin.c b/contrib/macfuse/mount_darwin.c index f4ecacad86a..21ed7e503a6 100644 --- a/contrib/macfuse/mount_darwin.c +++ b/contrib/macfuse/mount_darwin.c @@ -94,7 +94,7 @@ gf_fuse_mount (const char *mountpoint, char *fsname, char *mnt_param,          }          /* sysctlbyname() includes the trailing '\0' in version_len */ -        version_len_desired = strlen("2.x.y") + 1; +        version_len_desired = sizeof ("2.x.y");          if (version_len != version_len_desired) {                  gf_log ("glusterfs-fuse", GF_LOG_ERROR, diff --git a/contrib/umountd/umountd.c b/contrib/umountd/umountd.c index c06dd54db6e..6b9e3c43031 100644 --- a/contrib/umountd/umountd.c +++ b/contrib/umountd/umountd.c @@ -66,7 +66,7 @@ sanity_check (char *path, dev_t *devp)          if (*devp == -1 && ret == 0)                  *devp = st.st_dev; -        strncpy (pathtmp, path, PATH_MAX); +        snprintf (pathtmp, PATH_MAX, "%s", path);          parent = dirname (pathtmp);          if (stat (parent, &parent_st) != 0) {  | 
