aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2022-02-14 10:08:34 +0100
committerMarcoFalke <falke.marco@gmail.com>2022-02-14 10:08:38 +0100
commitfd25d3493d6ebde5ef5a68f5d8a27ec4b910ef2f (patch)
tree1429616673c691bf67ccfe71a58feda96f635449
parent3eec29ed3aa1c8eb293a7a7a6be356fc014f8813 (diff)
parentfa6065661a86656a29e89ed1a3529cb7103f5394 (diff)
downloadbitcoin-fd25d3493d6ebde5ef5a68f5d8a27ec4b910ef2f.tar.xz
Merge bitcoin/bitcoin#24319: refactor: Avoid unsigned integer overflow in core_write
fa6065661a86656a29e89ed1a3529cb7103f5394 refactor: Avoid unsigned integer overflow in core_write (MarcoFalke) Pull request description: Also, I find the new code a bit easier to understand. ACKs for top commit: shaavan: Code Review ACK fa6065661a86656a29e89ed1a3529cb7103f5394 Tree-SHA512: cd751e3b4dc97ef525eb8be8d0a49e9629389cb114df18d59a06e05388822af2939078e937f01494e6b317d601743b1a433ba47aa40c4dc602372d1f0fd0dc11
-rw-r--r--src/core_write.cpp2
-rw-r--r--test/sanitizer_suppressions/ubsan1
2 files changed, 1 insertions, 2 deletions
diff --git a/src/core_write.cpp b/src/core_write.cpp
index 5ea62cf3ed..c4b6b8d27e 100644
--- a/src/core_write.cpp
+++ b/src/core_write.cpp
@@ -65,7 +65,7 @@ std::string FormatScript(const CScript& script)
ret += strprintf("0x%x ", HexStr(std::vector<uint8_t>(it2, script.end())));
break;
}
- return ret.substr(0, ret.size() - 1);
+ return ret.substr(0, ret.empty() ? ret.npos : ret.size() - 1);
}
const std::map<unsigned char, std::string> mapSigHashTypes = {
diff --git a/test/sanitizer_suppressions/ubsan b/test/sanitizer_suppressions/ubsan
index 2084e02b8a..bdaee5d191 100644
--- a/test/sanitizer_suppressions/ubsan
+++ b/test/sanitizer_suppressions/ubsan
@@ -47,7 +47,6 @@ unsigned-integer-overflow:arith_uint256.h
unsigned-integer-overflow:common/bloom.cpp
unsigned-integer-overflow:coins.cpp
unsigned-integer-overflow:compressor.cpp
-unsigned-integer-overflow:core_write.cpp
unsigned-integer-overflow:crypto/
unsigned-integer-overflow:hash.cpp
unsigned-integer-overflow:policy/fees.cpp