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);