From 0c9cbe12936bc198b5ba9dc3f25f1fd1609abc37 Mon Sep 17 00:00:00 2001 From: Rachel Bousfield Date: Fri, 12 Jan 2024 20:33:50 -0700 Subject: [PATCH] tighten limits --- arbitrator/prover/src/binary.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/arbitrator/prover/src/binary.rs b/arbitrator/prover/src/binary.rs index d170d6916..062a2579b 100644 --- a/arbitrator/prover/src/binary.rs +++ b/arbitrator/prover/src/binary.rs @@ -619,20 +619,23 @@ impl<'a> WasmBinary<'a> { }; } limit!(1, bin.memories.len(), "memories"); - limit!(100, bin.datas.len(), "datas"); - limit!(100, bin.elements.len(), "elements"); - limit!(1_000, bin.exports.len(), "exports"); - limit!(1_000, bin.tables.len(), "tables"); - limit!(10_000, bin.codes.len(), "functions"); - limit!(50_000, bin.globals.len(), "globals"); - for function in &bin.codes { - limit!(4096, function.locals.len(), "locals") + limit!(128, bin.datas.len(), "datas"); + limit!(128, bin.elements.len(), "elements"); + limit!(1024, bin.exports.len(), "exports"); + limit!(4096, bin.codes.len(), "functions"); + limit!(32768, bin.globals.len(), "globals"); + for code in &bin.codes { + limit!(348, code.locals.len(), "locals"); + limit!(65536, code.expr.len(), "opcodes in func body"); } + let locals = bin.codes.iter().map(|x| x.locals.len()).max(); + println!("locals: {:?}", locals); + let table_entries = bin.tables.iter().map(|x| x.initial).saturating_sum(); - limit!(10_000, table_entries, "table entries"); + limit!(8192, table_entries, "table entries"); - let max_len = 500; + let max_len = 512; macro_rules! too_long { ($name:expr, $len:expr) => { bail!(