too small arrays for file names
PATCH 1/1 too small arrays for file names
In our experiments blktrace/blkparse file names encode a lot of infomation about the particular experiment. We noticed that for long enough file names blkparse does not work.
The reason is that per_cpu_info->fname[] is of 128 bytes. As a result, in setup_file() function only part of the file name gets to ->fname[]. Then stat() fails and we exit the function. Notice, that no error is printed in this case.
In the following patch ->fname[] size is increased to POSXI defined PATH_MAX.
Signed-off-by Vasily Tarasov <[email protected]>
blkparse.c +1 -1
@@ -2836,7 +2836,7 @@ int main(int argc, char *argv[]) ofp =fdopen (STDOUT_FILENO ,"w" ); mode = _IOLBF; }else { -char ofname[128 ]; +char ofname[PATH_MAX ];snprintf (ofname,sizeof (ofname) -1 ,"%s" , output_name); ofp =fopen (ofname,"w" );
blktrace.h +2 -1
@@ -2,6 +2,7 @@#define BLKTRACE_H #include <stdio.h> +#include <limits.h> #include <byteswap.h> #include <endian.h>
@@ -44,7 +45,7 @@ struct per_cpu_info {int fd;int fdblock; -char fname[128 ]; +char fname[PATH_MAX ];struct io_stats io_stats;