--- e4rat-0.2.4_pre20141201/src/e4rat-collect.cc.orig 2014-11-24 12:12:12.000000000 +0300 +++ e4rat-0.2.4_pre20141201/src/e4rat-collect.cc 2017-02-12 02:16:25.151757182 +0300 @@ -32,6 +32,7 @@ #include #include #include +#include /* EXT2_SUPER_MAGIC */ #include @@ -361,7 +362,9 @@ { create_pid_late = true; - outPath = Config::get("startup_log_file").c_str(); + // It is unsafe to use Config::get(arg)c_str() pointer + // directly, since it may be overwritten by later get calls. + outPath = strdup(Config::get("startup_log_file").c_str()); verbose = 0; } else --- e4rat-0.2.4_pre20141201/src/e4rat-preload.cc.orig 2014-11-24 12:12:12.000000000 +0300 +++ e4rat-0.2.4_pre20141201/src/e4rat-preload.cc 2017-02-12 02:16:38.425552630 +0300 @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -227,7 +228,8 @@ try { if(getpid() == 1) { - const char* logfile = Config::get("startup_log_file").c_str(); + // pointer may change, string must be copied + const char* logfile = strdup(Config::get("startup_log_file").c_str()); notice("Open %s ... ", logfile); FILE* infile = fopen(logfile, "r"); if(!infile)