-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- v0.18.4.0-RC1
- v0.18.3.4-RC12
- v0.18.3.4-RC11
- v0.18.3.4-RC10
- v0.18.3.4-RC9
- v0.18.3.4-RC8-zano
- v0.18.3.4-RC7
- v0.18.3.4-RC6
- v0.18.3.4-RC5
- v0.18.3.4-RC5-docs-airgap
- v0.18.3.4-RC4
- v0.18.3.4-RC4-docs3
- v0.18.3.4-RC4-docs2
- v0.18.3.4-RC4-docs
- v0.18.3.4-RC3
- v0.18.3.4-RC2
- v0.18.3.4-RC1
- v0.18.3.3-RC51
- v0.18.3.3-RC50
- v0.18.3.3-RC49
- v0.18.3.3-RC48
- v0.18.3.3-RC47
Showing
1 changed file
with
68 additions
and
0 deletions.
There are no files selected for viewing
68 changes: 68 additions & 0 deletions
68
patches/monero/0014-use-proper-error-handling-in-get_seed.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
From 50e09195fcb79debf5951c69717b9d4f239ed8e1 Mon Sep 17 00:00:00 2001 | ||
From: Czarek Nakamoto <cyjan@mrcyjanek.net> | ||
Date: Mon, 24 Jun 2024 10:49:12 +0200 | ||
Subject: [PATCH] use proper error handling in get_seed | ||
|
||
--- | ||
src/wallet/api/wallet.cpp | 17 ++++++++++++----- | ||
src/wallet/wallet2.cpp | 3 +++ | ||
2 files changed, 15 insertions(+), 5 deletions(-) | ||
|
||
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp | ||
index ac3e6d51e..8bdd75a5a 100644 | ||
--- a/src/wallet/api/wallet.cpp | ||
+++ b/src/wallet/api/wallet.cpp | ||
@@ -880,12 +880,19 @@ bool WalletImpl::close(bool store) | ||
|
||
std::string WalletImpl::seed(const std::string& seed_offset) const | ||
{ | ||
- if (checkBackgroundSync("cannot get seed")) | ||
+ if (checkBackgroundSync("cannot get seed")) { | ||
+ setStatusError("cannot get seed"); | ||
return std::string(); | ||
- epee::wipeable_string seed; | ||
- if (m_wallet) | ||
- m_wallet->get_seed(seed, seed_offset); | ||
- return std::string(seed.data(), seed.size()); // TODO | ||
+ } | ||
+ try { | ||
+ epee::wipeable_string seed; | ||
+ if (m_wallet) | ||
+ m_wallet->get_seed(seed, seed_offset); | ||
+ return std::string(seed.data(), seed.size()); // TODO | ||
+ } catch (const std::exception &e) { | ||
+ setStatusError(e.what()); | ||
+ return std::string(); | ||
+ } | ||
} | ||
|
||
bool WalletImpl::getPolyseed(std::string &seed_words, std::string &passphrase) const | ||
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp | ||
index 23b56810e..f7bdf2429 100644 | ||
--- a/src/wallet/wallet2.cpp | ||
+++ b/src/wallet/wallet2.cpp | ||
@@ -1452,11 +1452,13 @@ bool wallet2::get_seed(epee::wipeable_string& electrum_words, const epee::wipeab | ||
bool keys_deterministic = is_deterministic(); | ||
if (!keys_deterministic) | ||
{ | ||
+ THROW_WALLET_EXCEPTION(error::wallet_internal_error, "This is not a deterministic wallet"); | ||
std::cout << "This is not a deterministic wallet" << std::endl; | ||
return false; | ||
} | ||
if (seed_language.empty()) | ||
{ | ||
+ THROW_WALLET_EXCEPTION(error::wallet_internal_error, "seed_language not set"); | ||
std::cout << "seed_language not set" << std::endl; | ||
return false; | ||
} | ||
@@ -1466,6 +1468,7 @@ bool wallet2::get_seed(epee::wipeable_string& electrum_words, const epee::wipeab | ||
key = cryptonote::encrypt_key(key, passphrase); | ||
if (!crypto::ElectrumWords::bytes_to_words(key, electrum_words, seed_language)) | ||
{ | ||
+ THROW_WALLET_EXCEPTION(error::wallet_internal_error, "Failed to create seed from key for language: "+seed_language+", falling back to English."); | ||
std::cout << "Failed to create seed from key for language: " << seed_language << ", falling back to English." << std::endl; | ||
crypto::ElectrumWords::bytes_to_words(key, electrum_words, "English"); | ||
} | ||
-- | ||
2.39.2 | ||
|