smacker: add forgotten recursion depth check
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 30 Sep 2023 09:46:18 +0000 (11:46 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 7 Oct 2023 16:47:32 +0000 (18:47 +0200)
nihav-rad/src/codecs/smacker.rs

index d834c7eea40ff17457f2c1dda64e1e26d3282824..7ecd4436b074063c67acd37cc0a98bc7ed6aff90 100644 (file)
@@ -94,6 +94,7 @@ const SMK_LAST_UNINIT: usize = 0xFFFFFFFF;
 impl SmackerTree16Builder {
     fn get_tree16(&mut self, br: &mut BitReader, tree: &mut SmackerTree16, depth: usize) -> DecoderResult<u32> {
         validate!(tree.tree.len() < self.nsyms);
+        validate!(depth <= 32);
         if !br.read_bool()? {
             let lo = br.read_tree8(&self.tree_lo)?;
             let hi = br.read_tree8(&self.tree_hi)?;