From 320a49fc1a867b189c6a620b2caee249ae83c62d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B6ppner?= Date: Fri, 9 Nov 2018 15:04:08 +0100 Subject: [PATCH] hmcdrvfs: Replace strncpy() with util_strlcpy() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use util_strlcpy() to copy strings correctly and get rid of the following GCC8 compile warning: In function ‘hmcdrv_parse_line’, inlined from ‘hmcdrv_cache_dir’ at hmcdrvfs.c:981:11: hmcdrvfs.c:862:4: warning: ‘strncpy’ specified bound 192 equals destination size [-Wstringop-truncation] strncpy(symlink, arrow + 4, HMCDRV_FUSE_MAXPATH); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Jan Höppner --- hmcdrvfs/Makefile | 3 ++- hmcdrvfs/hmcdrvfs.c | 14 ++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/hmcdrvfs/Makefile b/hmcdrvfs/Makefile index 5d81031c..3a1026b1 100644 --- a/hmcdrvfs/Makefile +++ b/hmcdrvfs/Makefile @@ -31,12 +31,13 @@ LDLIBS += $(FUSE_LDLIBS) -lpthread -lrt -ldl -lm OBJECTS = hmcdrvfs.o +libs = $(rootdir)/libutil/libutil.a all: check_dep hmcdrvfs $(OBJECTS): Makefile -hmcdrvfs: $(OBJECTS) +hmcdrvfs: $(OBJECTS) $(libs) install: all install-scripts $(INSTALL) -g $(GROUP) -o $(OWNER) -m 755 hmcdrvfs \ diff --git a/hmcdrvfs/hmcdrvfs.c b/hmcdrvfs/hmcdrvfs.c index fb540662..d988b648 100644 --- a/hmcdrvfs/hmcdrvfs.c +++ b/hmcdrvfs/hmcdrvfs.c @@ -27,6 +27,7 @@ #include #include +#include "lib/util_libc.h" #include "lib/zt_common.h" #define HMCDRV_FUSE_LOGNAME "hmcdrvfs" /* log prefix */ @@ -276,7 +277,7 @@ static void hmcdrv_cache_symlink(struct hmcdrv_fuse_file *fp, fp->symlnk = malloc(HMCDRV_FUSE_MAXPATH); if (fp->symlnk != NULL) { - strncpy(fp->symlnk, symlink, HMCDRV_FUSE_MAXPATH); + util_strlcpy(fp->symlnk, symlink, HMCDRV_FUSE_MAXPATH); fp->symlnk[HMCDRV_FUSE_MAXPATH - 1] = '\0'; } } @@ -483,8 +484,7 @@ static ssize_t hmcdrv_ftp_transfer(struct hmcdrv_fuse_file *fp, char *buf, } current_offset += retlen; - strncpy(last_ftpcmd, fp->ftpcmd, HMCDRV_FUSE_MAXCMDLEN); - last_ftpcmd[HMCDRV_FUSE_MAXCMDLEN - 1] = '\0'; + util_strlcpy(last_ftpcmd, fp->ftpcmd, HMCDRV_FUSE_MAXCMDLEN); return retlen; } @@ -853,13 +853,12 @@ static char *hmcdrv_parse_line(char *line, char *namebuf, *arrow = '\0'; } - strncpy(namebuf, attr.fname, bufsize); - namebuf[bufsize - 1] = '\0'; /* safety */ + util_strlcpy(namebuf, attr.fname, bufsize); if (arrow == NULL) { symlink[0] = '\0'; } else { - strncpy(symlink, arrow + 4, HMCDRV_FUSE_MAXPATH); + util_strlcpy(symlink, arrow + 4, HMCDRV_FUSE_MAXPATH); *arrow = ' '; /* restore */ } @@ -1148,8 +1147,7 @@ static int hmcdrv_fuse_readlink(const char *path, char *buf, size_t size) if (!S_ISLNK(fp->st.st_mode)) { rc = -EINVAL; } else { - strncpy(buf, fp->symlnk, size); - buf[size - 1] = '\0'; + util_strlcpy(buf, fp->symlnk, size); } } }