Fix off-by-one in fgets() size
[fio.git] / init.c
diff --git a/init.c b/init.c
index 485efc9f641a59047d540910a4af30afd6efab38..72ec85dc740ef08f500662d25c7b7081f2d316f6 100644 (file)
--- a/init.c
+++ b/init.c
 #include "fio_version.h"
 
 #if FIO_PATCH > 0
-static char fio_version_string[] =     __fio_stringify(FIO_MAJOR) "."  \
+const char fio_version_string[] =      __fio_stringify(FIO_MAJOR) "."  \
                                        __fio_stringify(FIO_MINOR) "."  \
                                        __fio_stringify(FIO_PATCH);
 #else
-static char fio_version_string[] =     __fio_stringify(FIO_MAJOR) "."  \
+const char fio_version_string[] =      __fio_stringify(FIO_MAJOR) "."  \
                                        __fio_stringify(FIO_MINOR);
 #endif
 
@@ -318,6 +318,8 @@ static void put_job(struct thread_data *td)
        if (td->error)
                log_info("fio: %s\n", td->verror);
 
+       fio_options_free(td);
+
        memset(&threads[td->thread_number - 1], 0, sizeof(*td));
        thread_number--;
 }
@@ -962,7 +964,7 @@ int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
                        if (is_buf)
                                p = strsep(&file, "\n");
                        else
-                               p = fgets(string, 4095, f);
+                               p = fgets(string, 4096, f);
                        if (!p)
                                break;
                }
@@ -1070,6 +1072,12 @@ int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
        if (dump_cmdline)
                log_info("\n");
 
+       i = 0;
+       while (i < nr_job_sections) {
+               free(job_sections[i]);
+               i++;
+       }
+
        for (i = 0; i < num_opts; i++)
                free(opts[i]);
 
@@ -1497,7 +1505,7 @@ int parse_options(int argc, char *argv[])
        }
 
        free(ini_file);
-       options_mem_free(&def_thread);
+       fio_options_free(&def_thread);
 
        if (!thread_number) {
                if (dump_cmdline)
@@ -1525,6 +1533,8 @@ int parse_options(int argc, char *argv[])
                fio_gtod_cpu = def_thread.o.gtod_cpu;
        }
 
-       log_info("fio %s\n", fio_version_string);
+       if (!terse_output)
+               log_info("fio %s\n", fio_version_string);
+
        return 0;
 }