diff options
author | Andrew Chow <github@achow101.com> | 2023-09-05 12:03:46 -0400 |
---|---|---|
committer | Andrew Chow <github@achow101.com> | 2023-09-12 12:14:31 -0400 |
commit | 8dd067088d41f021b357d7db5fa5f0a9f61edddc (patch) | |
tree | 6b2adb2b5c2e5cae92f032d910e7294d55d716a4 /src/key_io.cpp | |
parent | 238d29aff9b43234e340a9cf17742b2be5d1e97d (diff) | |
download | bitcoin-8dd067088d41f021b357d7db5fa5f0a9f61edddc.tar.xz |
Make WitnessUnknown members private
Make sure that nothing else can change WitnessUnknown's data members by
making them private. Also change the program to use a vector rather than
C-style array.
Diffstat (limited to 'src/key_io.cpp')
-rw-r--r-- | src/key_io.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/key_io.cpp b/src/key_io.cpp index a061165613..96dc01550c 100644 --- a/src/key_io.cpp +++ b/src/key_io.cpp @@ -66,12 +66,13 @@ public: std::string operator()(const WitnessUnknown& id) const { - if (id.version < 1 || id.version > 16 || id.length < 2 || id.length > 40) { + const std::vector<unsigned char>& program = id.GetWitnessProgram(); + if (id.GetWitnessVersion() < 1 || id.GetWitnessVersion() > 16 || program.size() < 2 || program.size() > 40) { return {}; } - std::vector<unsigned char> data = {(unsigned char)id.version}; - data.reserve(1 + (id.length * 8 + 4) / 5); - ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, id.program, id.program + id.length); + std::vector<unsigned char> data = {(unsigned char)id.GetWitnessVersion()}; + data.reserve(1 + (program.size() * 8 + 4) / 5); + ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, program.begin(), program.end()); return bech32::Encode(bech32::Encoding::BECH32M, m_params.Bech32HRP(), data); } @@ -188,11 +189,7 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par return CNoDestination(); } - WitnessUnknown unk; - unk.version = version; - std::copy(data.begin(), data.end(), unk.program); - unk.length = data.size(); - return unk; + return WitnessUnknown{version, data}; } else { error_str = strprintf("Invalid padding in Bech32 data section"); return CNoDestination(); |