aboutsummaryrefslogtreecommitdiff
path: root/src/bitcoin-tx.cpp
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2022-01-24 16:12:42 +0100
committerMarcoFalke <falke.marco@gmail.com>2022-01-24 16:07:34 +0100
commitfaa75fa19335e3e826efa4f2280609a2db34425d (patch)
tree8a87ccda22353d92fb747fc62f375f96a24a7fe7 /src/bitcoin-tx.cpp
parente3de7cb9039770e0fd5b8bb8a5cba35c87ae8f00 (diff)
downloadbitcoin-faa75fa19335e3e826efa4f2280609a2db34425d.tar.xz
Avoid unsigned integer overflow in bitcoin-tx
Diffstat (limited to 'src/bitcoin-tx.cpp')
-rw-r--r--src/bitcoin-tx.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp
index edec883264..ace85d86cc 100644
--- a/src/bitcoin-tx.cpp
+++ b/src/bitcoin-tx.cpp
@@ -433,13 +433,16 @@ static void MutateTxAddOutData(CMutableTransaction& tx, const std::string& strIn
if (pos==0)
throw std::runtime_error("TX output value not specified");
- if (pos != std::string::npos) {
+ if (pos == std::string::npos) {
+ pos = 0;
+ } else {
// Extract and validate VALUE
value = ExtractAndValidateValue(strInput.substr(0, pos));
+ ++pos;
}
// extract and validate DATA
- std::string strData = strInput.substr(pos + 1, std::string::npos);
+ const std::string strData{strInput.substr(pos, std::string::npos)};
if (!IsHex(strData))
throw std::runtime_error("invalid TX output data");