From 46df157668aa09639928544856c9b4e0f94bc6a1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 07:35:28 +0100 Subject: [PATCH] src/key_search.cpp: add mutex lock to result output. --- src/key_search.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 24ddeb9..9286ddf 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -1,10 +1,30 @@ +#ifdef HAVE_THREADS +#include +#endif /* HAVE_THREADS */ #include #include #include "ec.h" #include "WIF.h" #include "key_search.h" +#ifdef HAVE_THREADS +// Guards result output. +std::mutex search_mutex; +#endif /* HAVE_THREADS */ + +static void key_result(const std::string& word, const struct ec_keypair* pair) { + +#ifdef HAVE_THREADS + // Guard output with mutex, so we don't get interrupted mid write. + const std::lock_guard lock(search_mutex); +#endif /* HAVE_THREADS */ + + std::cout << "----" << std::endl; + std::cout << "Found: " << word << std::endl; + wif_print_key(pair); +} + void key_search(strlist_t word_list, size_t n) { size_t count = 0; @@ -18,9 +38,7 @@ void key_search(strlist_t word_list, size_t n) { for(auto const& word: word_list) { if (pubstr.find(word) != std::string::npos) { - std::cout << "----" << std::endl; - std::cout << "Found: " << word << std::endl; - wif_print_key(&pair); + key_result(word, &pair); count++; } }