Skip to content

Commit 43d4b52

Browse files
authored
snapshots: fix .bt key decoding (#2685)
Problem: The key span was spanning until the end of encoded data leading to OOM when trying to decode big .bt files. Solution: Limit it using decoded key_length.
1 parent 9a04317 commit 43d4b52

File tree

1 file changed

+1
-1
lines changed
  • silkworm/db/datastore/snapshots/btree

1 file changed

+1
-1
lines changed

silkworm/db/datastore/snapshots/btree/btree.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ std::pair<BTree::Node, size_t> BTree::Node::from_encoded_data(std::span<uint8_t>
146146
const auto key_length = endian::load_big_u16(encoded_key.data());
147147
const auto encoded_size = kEncodedIndexPlusKeyLengthSize + key_length;
148148
ensure(encoded_node.size() >= encoded_size, "snapshots::index::BTree invalid encoded node size");
149-
const auto key = encoded_key.subspan(sizeof(uint16_t));
149+
const auto key = encoded_key.subspan(sizeof(uint16_t), key_length);
150150
return {Node{key_index, Bytes{key.data(), key.size()}}, encoded_size};
151151
}
152152

0 commit comments

Comments
 (0)