aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-02-29 00:29:04 +0700
committerMarcoFalke <falke.marco@gmail.com>2020-02-29 00:25:58 +0700
commit8888461f6814ae8b6221b02049fb9e1f69a5ff70 (patch)
tree5e6b4bb86f94b1c9ef02caba2d36156bc49b059b /src
parentfab30b61eb51538a4db62e34f7133c44575b3fe9 (diff)
downloadbitcoin-8888461f6814ae8b6221b02049fb9e1f69a5ff70.tar.xz
util: Fail to parse empty string in ParseMoney
Diffstat (limited to 'src')
-rw-r--r--src/test/util_tests.cpp6
-rw-r--r--src/util/moneystr.cpp4
2 files changed, 10 insertions, 0 deletions
diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp
index f86e713676..536ff3ba25 100644
--- a/src/test/util_tests.cpp
+++ b/src/test/util_tests.cpp
@@ -1199,6 +1199,12 @@ BOOST_AUTO_TEST_CASE(util_ParseMoney)
BOOST_CHECK(ParseMoney("0.00000001", ret));
BOOST_CHECK_EQUAL(ret, COIN/100000000);
+ // Parsing amount that can not be represented in ret should fail
+ BOOST_CHECK(!ParseMoney("0.000000001", ret));
+
+ // Parsing empty string should fail
+ BOOST_CHECK(!ParseMoney("", ret));
+
// Attempted 63 bit overflow should fail
BOOST_CHECK(!ParseMoney("92233720368.54775808", ret));
diff --git a/src/util/moneystr.cpp b/src/util/moneystr.cpp
index 981cb1b267..40d8918dfc 100644
--- a/src/util/moneystr.cpp
+++ b/src/util/moneystr.cpp
@@ -37,6 +37,10 @@ bool ParseMoney(const std::string& str, CAmount& nRet)
return false;
}
+ if (str.empty()) {
+ return false;
+ }
+
std::string strWhole;
int64_t nUnits = 0;
const char* p = str.c_str();