diff options
author | Ryan Ofsky <ryan@ofsky.org> | 2022-06-07 21:08:56 -0400 |
---|---|---|
committer | Ryan Ofsky <ryan@ofsky.org> | 2022-07-19 16:54:52 -0400 |
commit | 6db6552377ad6316626b3ab8605a98f96f22c3d2 (patch) | |
tree | 02a4dbcf56b2daf1c1b8123944c4d337f1a7f8aa | |
parent | b3e7de7ee6efb186efc272855ff1af5d9254b971 (diff) |
refactor: Reduce number of SanityChecks return values
-rw-r--r-- | src/init.cpp | 17 | ||||
-rw-r--r-- | src/kernel/checks.cpp | 9 | ||||
-rw-r--r-- | src/kernel/checks.h | 10 |
3 files changed, 10 insertions, 26 deletions
diff --git a/src/init.cpp b/src/init.cpp index b80c171f11..a94bbe6460 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1096,21 +1096,8 @@ static bool LockDataDirectory(bool probeOnly) bool AppInitSanityChecks(const kernel::Context& kernel) { // ********************************************************* Step 4: sanity checks - auto maybe_error = kernel::SanityChecks(kernel); - - if (maybe_error.has_value()) { - switch (maybe_error.value()) { - case kernel::SanityCheckError::ERROR_ECC: - InitError(Untranslated("Elliptic curve cryptography sanity check failure. Aborting.")); - break; - case kernel::SanityCheckError::ERROR_RANDOM: - InitError(Untranslated("OS cryptographic RNG sanity check failure. Aborting.")); - break; - case kernel::SanityCheckError::ERROR_CHRONO: - InitError(Untranslated("Clock epoch mismatch. Aborting.")); - break; - } // no default case, so the compiler can warn about missing cases - + if (auto error = kernel::SanityChecks(kernel)) { + InitError(*error); return InitError(strprintf(_("Initialization sanity check failed. %s is shutting down."), PACKAGE_NAME)); } diff --git a/src/kernel/checks.cpp b/src/kernel/checks.cpp index 2a1dd3bfa2..f476db60f5 100644 --- a/src/kernel/checks.cpp +++ b/src/kernel/checks.cpp @@ -7,21 +7,22 @@ #include <key.h> #include <random.h> #include <util/time.h> +#include <util/translation.h> namespace kernel { -std::optional<SanityCheckError> SanityChecks(const Context&) +std::optional<bilingual_str> SanityChecks(const Context&) { if (!ECC_InitSanityCheck()) { - return SanityCheckError::ERROR_ECC; + return Untranslated("Elliptic curve cryptography sanity check failure. Aborting."); } if (!Random_SanityCheck()) { - return SanityCheckError::ERROR_RANDOM; + return Untranslated("OS cryptographic RNG sanity check failure. Aborting."); } if (!ChronoSanityCheck()) { - return SanityCheckError::ERROR_CHRONO; + return Untranslated("Clock epoch mismatch. Aborting."); } return std::nullopt; diff --git a/src/kernel/checks.h b/src/kernel/checks.h index 80b207f607..3eb14824fb 100644 --- a/src/kernel/checks.h +++ b/src/kernel/checks.h @@ -7,20 +7,16 @@ #include <optional> +struct bilingual_str; + namespace kernel { struct Context; -enum class SanityCheckError { - ERROR_ECC, - ERROR_RANDOM, - ERROR_CHRONO, -}; - /** * Ensure a usable environment with all necessary library support. */ -std::optional<SanityCheckError> SanityChecks(const Context&); +std::optional<bilingual_str> SanityChecks(const Context&); } |