Skip to contentSkip to conversation

too small arrays for file names

PATCH New Vasily Tarasov 1 participant 1 message Sep 9, 2011

lore
Share & tools
lore
#0 lore raw

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.

blkparse.c +1 -1
index 169d491..6db7307 100644
@@ -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
index 8b3e031..5da6dbc 100644
@@ -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;