mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 14:38:29 +01:00
serialization: prevent int overflow for big Coin::nHeight
This commit is contained in:
@@ -24,7 +24,7 @@ struct TxInUndoFormatter
|
||||
{
|
||||
template<typename Stream>
|
||||
void Ser(Stream &s, const Coin& txout) {
|
||||
::Serialize(s, VARINT(txout.nHeight * 2 + (txout.fCoinBase ? 1u : 0u)));
|
||||
::Serialize(s, VARINT(txout.nHeight * uint32_t{2} + txout.fCoinBase ));
|
||||
if (txout.nHeight > 0) {
|
||||
// Required to maintain compatibility with older undo format.
|
||||
::Serialize(s, (unsigned char)0);
|
||||
@@ -34,9 +34,9 @@ struct TxInUndoFormatter
|
||||
|
||||
template<typename Stream>
|
||||
void Unser(Stream &s, Coin& txout) {
|
||||
unsigned int nCode = 0;
|
||||
uint32_t nCode = 0;
|
||||
::Unserialize(s, VARINT(nCode));
|
||||
txout.nHeight = nCode / 2;
|
||||
txout.nHeight = nCode >> 1;
|
||||
txout.fCoinBase = nCode & 1;
|
||||
if (txout.nHeight > 0) {
|
||||
// Old versions stored the version number for the last spend of
|
||||
|
||||
Reference in New Issue
Block a user