From 40d9420b00acf21d1bbe6755ad4d79be26066159 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 3 Aug 2022 14:12:32 +1000 Subject: [PATCH] Handle deeply nested decks --- rslib/src/decks/tree.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rslib/src/decks/tree.rs b/rslib/src/decks/tree.rs index 31ea2581d..ccf8d6357 100644 --- a/rslib/src/decks/tree.rs +++ b/rslib/src/decks/tree.rs @@ -32,7 +32,10 @@ fn add_child_nodes( ) { while let Some((id, name)) = names.peek() { let split_name: Vec<_> = name.split("::").collect(); - match split_name.len() as u32 { + // protobuf refuses to decode messages with 100+ levels of nesting, and + // broken collections with such nesting have been found in the wild + let capped_len = split_name.len().min(99) as u32; + match capped_len { l if l <= parent.level => { // next item is at a higher level return;