From c3ce73f5a414900c5c4817cf2fa1eeb7837f17b8 Mon Sep 17 00:00:00 2001 From: Vasily Tarasov Date: Mon, 27 Feb 2012 08:21:11 +0100 Subject: [PATCH] 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 POSIX defined PATH_MAX. Signed-off-by: Vasily Tarasov --- blkparse.c | 2 +- blktrace.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/blkparse.c b/blkparse.c index b0b88c3..7be73aa 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2839,7 +2839,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"); diff --git a/blktrace.h b/blktrace.h index 8b3e031..5da6dbc 100644 --- a/blktrace.h +++ b/blktrace.h @@ -2,6 +2,7 @@ #define BLKTRACE_H #include +#include #include #include @@ -44,7 +45,7 @@ struct per_cpu_info { int fd; int fdblock; - char fname[128]; + char fname[PATH_MAX]; struct io_stats io_stats; -- 2.25.1