diff --git a/daemon/src/main.cpp b/daemon/src/main.cpp index 0a6bbe720855683701a64832e1965227141c73eb..54a7b9b1c7d410ec217628764cbd526ce072079d 100644 --- a/daemon/src/main.cpp +++ b/daemon/src/main.cpp @@ -137,7 +137,14 @@ int main(int argc, char *argv []) signal(SIGHUP, signal_handler); signal(SIGTERM, signal_handler); - fileutils::set_program_dir(argv[0]); + // make a copy as we don't want to modify argv[0], copy it to a vector to + // guarantee that memory is correctly managed/exception safe + std::string programName(argv[0]); + std::vector<char> writable(programName.size() + 1); + std::copy(programName.begin(), programName.end(), writable.begin()); + + fileutils::set_program_dir(&*writable.begin()); + print_title(); if (parse_args(argc, argv)) return 0;