From 50e59cfadad6215c74bbba9524b72ea1bf783641 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Thu, 16 Jan 2020 19:56:47 +0000 Subject: [PATCH] wallet2: reject zero keys in json input Because the user might do this for reasons unknown. Values beyond l-1 will be reduced, so are accepted. Reported by who-biz. --- src/wallet/wallet2.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 4d2ec5103..612340c7f 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -591,6 +591,8 @@ std::pair, tools::password_container> generate_f } viewkey = *reinterpret_cast(viewkey_data.data()); crypto::public_key pkey; + if (viewkey == crypto::null_skey) + THROW_WALLET_EXCEPTION(tools::error::wallet_internal_error, tools::wallet2::tr("view secret key may not be all zeroes")); if (!crypto::secret_key_to_public_key(viewkey, pkey)) { THROW_WALLET_EXCEPTION(tools::error::wallet_internal_error, tools::wallet2::tr("failed to verify view key secret key")); } @@ -607,6 +609,8 @@ std::pair, tools::password_container> generate_f } spendkey = *reinterpret_cast(spendkey_data.data()); crypto::public_key pkey; + if (spendkey == crypto::null_skey) + THROW_WALLET_EXCEPTION(tools::error::wallet_internal_error, tools::wallet2::tr("spend secret key may not be all zeroes")); if (!crypto::secret_key_to_public_key(spendkey, pkey)) { THROW_WALLET_EXCEPTION(tools::error::wallet_internal_error, tools::wallet2::tr("failed to verify spend key secret key")); }