Fixes the buffer overflow warnings, by using snprintf instead of sprintf. fstest.c:95:20: warning: '/file' directive writing 5 bytes into a region of size between 1 and 1024 [-Wformat-overflow=] sprintf(fname, "%s/file%d", dir, fnum); ^~~~~ fstest.c:166:20: warning: '/file' directive writing 5 bytes into a region of size between 1 and 1024 [-Wformat-overflow=] sprintf(fname, "%s/file%d", dir, fnum); Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx> --- src/fstest.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/fstest.c b/src/fstest.c index e4b9e081144a..4f6dc643dd12 100644 --- a/src/fstest.c +++ b/src/fstest.c @@ -88,11 +88,16 @@ static void check_buffer(uchar *buf, int loop, int child, int fnum, int ofs) static void create_file(const char *dir, int loop, int child, int fnum) { char *buf; - int size, fd; + int size, fd, ret; char fname[1024]; buf = x_malloc(block_size); - sprintf(fname, "%s/file%d", dir, fnum); + ret = snprintf(fname, sizeof(fname), "%s/file%d", dir, fnum); + if (ret < 0 || ret >= sizeof(fname)) { + fprintf(stderr,"file path '%s' too long %d\n", dir, ret); + exit(1); + } + fd = open(fname, O_RDWR|O_CREAT|O_TRUNC | (use_sync?O_SYNC:0), 0644); if (fd == -1) { perror(fname); @@ -158,12 +163,16 @@ bozo! static void check_file(const char *dir, int loop, int child, int fnum) { uchar *buf; - int size, fd; + int size, fd, ret; char fname[1024]; buf = x_malloc(block_size); - sprintf(fname, "%s/file%d", dir, fnum); + ret = snprintf(fname, sizeof(fname), "%s/file%d", dir, fnum); + if (ret < 0 || ret >= sizeof(fname)) { + fprintf(stderr,"file path is '%s' too long %d\n", dir, ret); + exit(1); + } fd = open(fname, O_RDONLY); if (fd == -1) { perror(fname); -- 2.38.1