Skip to content

Commit

Permalink
Move common sanity check code to init/common
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanofsky committed Apr 19, 2021
1 parent a67b548 commit 387c4cf
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 26 deletions.
28 changes: 2 additions & 26 deletions src/init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -672,30 +672,6 @@ static void StartupNotify(const ArgsManager& args)
}
#endif

/** Sanity checks
* Ensure that Bitcoin is running in a usable environment with all
* necessary library support.
*/
static bool InitSanityCheck()
{
if (!ECC_InitSanityCheck()) {
return InitError(Untranslated("Elliptic curve cryptography sanity check failure. Aborting."));
}

if (!glibcxx_sanity_test())
return false;

if (!Random_SanityCheck()) {
return InitError(Untranslated("OS cryptographic RNG sanity check failure. Aborting."));
}

if (!ChronoSanityCheck()) {
return InitError(Untranslated("Clock epoch mismatch. Aborting."));
}

return true;
}

static bool AppInitServers(NodeContext& node)
{
const ArgsManager& args = *Assert(node.args);
Expand Down Expand Up @@ -1147,9 +1123,9 @@ bool AppInitSanityChecks()

init::SetGlobals();

// Sanity check
if (!InitSanityCheck())
if (!init::SanityChecks()) {
return InitError(strprintf(_("Initialization sanity check failed. %s is shutting down."), PACKAGE_NAME));
}

// Probe the data directory lock to give an early error message, if possible
// We cannot hold the data directory lock here, as the forking for daemon() hasn't yet happened,
Expand Down
24 changes: 24 additions & 0 deletions src/init/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#include <compat/sanity.h>
#include <crypto/sha256.h>
#include <key.h>
#include <logging.h>
#include <node/ui_interface.h>
#include <pubkey.h>
#include <random.h>
#include <util/time.h>
#include <util/translation.h>

#include <memory>

Expand All @@ -27,4 +31,24 @@ void UnsetGlobals()
globalVerifyHandle.reset();
ECC_Stop();
}

bool SanityChecks()
{
if (!ECC_InitSanityCheck()) {
return InitError(Untranslated("Elliptic curve cryptography sanity check failure. Aborting."));
}

if (!glibcxx_sanity_test())
return false;

if (!Random_SanityCheck()) {
return InitError(Untranslated("OS cryptographic RNG sanity check failure. Aborting."));
}

if (!ChronoSanityCheck()) {
return InitError(Untranslated("Clock epoch mismatch. Aborting."));
}

return true;
}
} // namespace init
5 changes: 5 additions & 0 deletions src/init/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
namespace init {
void SetGlobals();
void UnsetGlobals();
/**
* Ensure a usable environment with all
* necessary library support.
*/
bool SanityChecks();
} // namespace init

#endif // BITCOIN_INIT_COMMON_H

0 comments on commit 387c4cf

Please sign in to comment.