diff --git a/libraries/chain/block.cpp b/libraries/chain/block.cpp index 67e228ef15..a6b3e42132 100644 --- a/libraries/chain/block.cpp +++ b/libraries/chain/block.cpp @@ -65,6 +65,7 @@ namespace eosio::chain { return results; } + // Does not validate ordering, assumes validate_and_extract_extensions() has been called in verify_qc_claim() std::optional signed_block::extract_extension(uint16_t extension_id)const { using decompose_t = block_extension_types::decompose_t; @@ -72,6 +73,8 @@ namespace eosio::chain { const auto& e = block_extensions[i]; auto id = e.first; + if (id > extension_id) + break; if (id != extension_id) continue; diff --git a/libraries/chain/block_header.cpp b/libraries/chain/block_header.cpp index 4c94d47625..7ac95b9f39 100644 --- a/libraries/chain/block_header.cpp +++ b/libraries/chain/block_header.cpp @@ -65,6 +65,7 @@ namespace eosio { namespace chain { return results; } + // Does not validate ordering, assumes validate_and_extract_header_extensions() has been called in block_state creation std::optional block_header::extract_header_extension(uint16_t extension_id)const { using decompose_t = block_header_extension_types::decompose_t; @@ -72,6 +73,8 @@ namespace eosio { namespace chain { const auto& e = header_extensions[i]; auto id = e.first; + if (id > extension_id) + break; if (id != extension_id) continue;