Fix O(n²) find_head and stack overflow in filter_block_tree (#9090)

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
This commit is contained in:
Lion - dapplion
2026-06-05 03:24:49 +02:00
committed by GitHub
parent da42d37456
commit 494b00a349
6 changed files with 272 additions and 72 deletions

View File

@@ -59,11 +59,13 @@ impl TryFrom<(SszContainerV29, JustifiedBalances)> for ProtoArrayForkChoice {
type Error = Error;
fn try_from((from, balances): (SszContainerV29, JustifiedBalances)) -> Result<Self, Error> {
let proto_array = ProtoArray {
let mut proto_array = ProtoArray {
prune_threshold: from.prune_threshold,
nodes: from.nodes,
indices: from.indices.into_iter().collect::<HashMap<_, _>>(),
children: Vec::new(),
};
proto_array.rebuild_children_index()?;
Ok(Self {
proto_array,