From 4bc0b559cbb2f01a074e9168d16a09b8e1deff98 Mon Sep 17 00:00:00 2001 From: SChernykh <15806605+SChernykh@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:29:01 +0200 Subject: [PATCH] Block parser: sanity check minor version --- src/pool_block_parser.inl | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/pool_block_parser.inl b/src/pool_block_parser.inl index 602c0d3..d5a4a12 100644 --- a/src/pool_block_parser.inl +++ b/src/pool_block_parser.inl @@ -61,21 +61,17 @@ int PoolBlock::deserialize(const uint8_t* data, size_t size, const SideChain& si #define READ_BUF(buf, size) do { if (!read_buf((buf), (size))) return __LINE__; } while(0) - if (!merge_mining_enabled()) { - READ_BYTE(m_majorVersion); - READ_BYTE(m_minorVersion); - } - else { - READ_VARINT(m_majorVersion); - READ_VARINT(m_minorVersion); - } - + READ_BYTE(m_majorVersion); if (m_majorVersion > HARDFORK_SUPPORTED_VERSION) return __LINE__; + + READ_BYTE(m_minorVersion); if (m_minorVersion < m_majorVersion) return __LINE__; READ_VARINT(m_timestamp); READ_BUF(m_prevId.h, HASH_SIZE); + if (merge_mining_enabled() && (m_minorVersion > 127)) return __LINE__; + const int nonce_offset = static_cast(data - data_begin); READ_BUF(&m_nonce, NONCE_SIZE);