diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2012-10-11 18:28:47 -0700 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2012-10-11 18:28:47 -0700 |
commit | 4bb25e48d722f4ce4ac0af098c049f95587ef266 (patch) | |
tree | b3ad9d646805e96d31f384a8a40586e2d5be5bb4 | |
parent | 16f3618c13c479b729349abc3b965df3f94342c5 (diff) | |
parent | 22bb049011bc6957244bc61a8334da2a5db86d04 (diff) |
Merge pull request #1921 from laanwj/2012_10_init_useafterfree
Fix a use-after-free problem in initialization (#1920)
-rw-r--r-- | src/init.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/init.cpp b/src/init.cpp index bdddc631da..8a928218b2 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -440,7 +440,7 @@ bool AppInit2() // ********************************************************* Step 4: application initialization: dir lock, daemonize, pidfile, debug log - const char* pszDataDir = GetDataDir().string().c_str(); + std::string strDataDir = GetDataDir().string(); // Make sure only a single Bitcoin process is using the data directory. boost::filesystem::path pathLockFile = GetDataDir() / ".lock"; @@ -448,7 +448,7 @@ bool AppInit2() if (file) fclose(file); static boost::interprocess::file_lock lock(pathLockFile.string().c_str()); if (!lock.try_lock()) - return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Bitcoin is probably already running."), pszDataDir)); + return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Bitcoin is probably already running."), strDataDir.c_str())); #if !defined(WIN32) && !defined(QT_GUI) if (fDaemon) @@ -480,7 +480,7 @@ bool AppInit2() if (!fLogTimestamps) printf("Startup time: %s\n", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str()); printf("Default data directory %s\n", GetDefaultDataDir().string().c_str()); - printf("Used data directory %s\n", pszDataDir); + printf("Used data directory %s\n", strDataDir.c_str()); std::ostringstream strErrors; if (fDaemon) @@ -496,7 +496,7 @@ bool AppInit2() { string msg = strprintf(_("Error initializing database environment %s!" " To recover, BACKUP THAT DIRECTORY, then remove" - " everything from it except for wallet.dat."), pszDataDir); + " everything from it except for wallet.dat."), strDataDir.c_str()); return InitError(msg); } @@ -515,7 +515,7 @@ bool AppInit2() string msg = strprintf(_("Warning: wallet.dat corrupt, data salvaged!" " Original wallet.dat saved as wallet.{timestamp}.bak in %s; if" " your balance or transactions are incorrect you should" - " restore from a backup."), pszDataDir); + " restore from a backup."), strDataDir.c_str()); uiInterface.ThreadSafeMessageBox(msg, _("Bitcoin"), CClientUIInterface::OK | CClientUIInterface::ICON_EXCLAMATION | CClientUIInterface::MODAL); } if (r == CDBEnv::RECOVER_FAIL) @@ -634,7 +634,7 @@ bool AppInit2() { string msg = strprintf(_("Error initializing database environment %s!" " To recover, BACKUP THAT DIRECTORY, then remove" - " everything from it except for wallet.dat."), pszDataDir); + " everything from it except for wallet.dat."), strDataDir.c_str()); return InitError(msg); } |