From 193e6d526b15bd444fce6a13a13d5a8be25a6499 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak Date: Thu, 31 Oct 2024 13:02:47 +0100 Subject: [PATCH] audit findings fixes --- src/air/layouts/_generator/main.py | 2 +- src/air/layouts/dex/public_input.cairo | 5 +---- src/air/layouts/recursive/public_input.cairo | 4 +--- src/air/layouts/recursive_with_poseidon/public_input.cairo | 5 +---- src/air/layouts/small/public_input.cairo | 5 +---- src/air/layouts/starknet/public_input.cairo | 5 +---- src/air/layouts/starknet_with_keccak/public_input.cairo | 5 +---- src/fri/fri.cairo | 4 ++++ src/fri/fri_config.cairo | 3 +++ 9 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/air/layouts/_generator/main.py b/src/air/layouts/_generator/main.py index 7bbbb7452..72a7ee48d 100644 --- a/src/air/layouts/_generator/main.py +++ b/src/air/layouts/_generator/main.py @@ -512,7 +512,7 @@ def main(): for layout, settings in layout_settings.items(): handle_github_file( - f"https://raw.githubusercontent.com/starkware-libs/cairo-lang/master/src/starkware/cairo/stark_verifier/air/layouts/{layout}/autogenerated.cairo", + f"https://raw.githubusercontent.com/starkware-libs/cairo-lang/a86e92bfde9c171c0856d7b46580c66e004922f3/src/starkware/cairo/stark_verifier/air/layouts/{layout}/autogenerated.cairo", f"../{layout}/autogenerated.cairo", layout, settings diff --git a/src/air/layouts/dex/public_input.cairo b/src/air/layouts/dex/public_input.cairo index 772fe53e9..b1c82f0e5 100644 --- a/src/air/layouts/dex/public_input.cairo +++ b/src/air/layouts/dex/public_input.cairo @@ -106,10 +106,7 @@ impl DexPublicInputImpl of PublicInputTrait { let output_hash = poseidon_hash_span(output); // Check main page len - assert( - *memory.at(memory_index - 1) == *self.main_page.at(self.main_page.len() - 1), - 'Invalid main page len' - ); + assert(memory_index == self.main_page.len(), 'Invalid main page len'); (program_hash, output_hash) } diff --git a/src/air/layouts/recursive/public_input.cairo b/src/air/layouts/recursive/public_input.cairo index 5a997cf31..beb62ade0 100644 --- a/src/air/layouts/recursive/public_input.cairo +++ b/src/air/layouts/recursive/public_input.cairo @@ -106,9 +106,7 @@ impl RecursivePublicInputImpl of PublicInputTrait { let output_hash = poseidon_hash_span(output); // Check main page len - assert( - *memory.at(memory_index - 1) == *memory.at(memory.len() - 1), 'Invalid main page len' - ); + assert(memory_index == self.main_page.len(), 'Invalid main page len'); (program_hash, output_hash) } diff --git a/src/air/layouts/recursive_with_poseidon/public_input.cairo b/src/air/layouts/recursive_with_poseidon/public_input.cairo index b33b8879a..9243ea4aa 100644 --- a/src/air/layouts/recursive_with_poseidon/public_input.cairo +++ b/src/air/layouts/recursive_with_poseidon/public_input.cairo @@ -107,10 +107,7 @@ impl RecursiveWithPoseidonPublicInputImpl of PublicInputTrait { let output_hash = poseidon_hash_span(output); // Check main page len - assert( - *memory.at(memory_index - 1) == *self.main_page.at(self.main_page.len() - 1), - 'Invalid main page len' - ); + assert(memory_index == self.main_page.len(), 'Invalid main page len'); (program_hash, output_hash) } diff --git a/src/air/layouts/small/public_input.cairo b/src/air/layouts/small/public_input.cairo index 677536c87..908f8619a 100644 --- a/src/air/layouts/small/public_input.cairo +++ b/src/air/layouts/small/public_input.cairo @@ -106,10 +106,7 @@ impl SmallPublicInputImpl of PublicInputTrait { let output_hash = poseidon_hash_span(output); // Check main page len - assert( - *memory.at(memory_index - 1) == *self.main_page.at(self.main_page.len() - 1), - 'Invalid main page len' - ); + assert(memory_index == self.main_page.len(), 'Invalid main page len'); (program_hash, output_hash) } diff --git a/src/air/layouts/starknet/public_input.cairo b/src/air/layouts/starknet/public_input.cairo index a82997643..002d478f8 100644 --- a/src/air/layouts/starknet/public_input.cairo +++ b/src/air/layouts/starknet/public_input.cairo @@ -107,10 +107,7 @@ impl StarknetPublicInputImpl of PublicInputTrait { let output_hash = poseidon_hash_span(output); // Check main page len - assert( - *memory.at(memory_index - 1) == *self.main_page.at(self.main_page.len() - 1), - 'Invalid main page len' - ); + assert(memory_index == self.main_page.len(), 'Invalid main page len'); (program_hash, output_hash) } diff --git a/src/air/layouts/starknet_with_keccak/public_input.cairo b/src/air/layouts/starknet_with_keccak/public_input.cairo index 0a730575e..93fe1f4f9 100644 --- a/src/air/layouts/starknet_with_keccak/public_input.cairo +++ b/src/air/layouts/starknet_with_keccak/public_input.cairo @@ -107,10 +107,7 @@ impl StarknetWithKeccakPublicInputImpl of PublicInputTrait { let output_hash = poseidon_hash_span(output); // Check main page len - assert( - *memory.at(memory_index - 1) == *self.main_page.at(self.main_page.len() - 1), - 'Invalid main page len' - ); + assert(memory_index == self.main_page.len(), 'Invalid main page len'); (program_hash, output_hash) } diff --git a/src/fri/fri.cairo b/src/fri/fri.cairo index 255257572..41330862b 100644 --- a/src/fri/fri.cairo +++ b/src/fri/fri.cairo @@ -115,6 +115,10 @@ fn fri_commit( ref channel: Channel, unsent_commitment: FriUnsentCommitment, config: FriConfig ) -> FriCommitment { assert((*config.fri_step_sizes.at(0)) == 0, 'Invalid value'); + assert( + unsent_commitment.inner_layers.len().into() == config.n_layers - 1, + 'Invalid inner layer commitments' + ); let (commitments, eval_points) = fri_commit_rounds( ref channel, diff --git a/src/fri/fri_config.cairo b/src/fri/fri_config.cairo index 7bf1bfcfe..a7e9ebf20 100644 --- a/src/fri/fri_config.cairo +++ b/src/fri/fri_config.cairo @@ -33,6 +33,9 @@ impl FriConfigImpl of FriConfigTrait { *self.log_last_layer_degree_bound <= MAX_LAST_LAYER_LOG_DEGREE_BOUND, 'Value too big' ); assert(*self.fri_step_sizes[0] == 0, 'Invalid value'); + assert( + (*self.inner_layers).len().into() == *self.n_layers - 1, 'Invalid inner layer config' + ); let mut i: u32 = 1; let n_layers: u32 = (*self.n_layers).try_into().unwrap();