diff --git a/vm/src/tests/cairo_pie_test.rs b/vm/src/tests/cairo_pie_test.rs index 487cbb8341..6b5b6f8e70 100644 --- a/vm/src/tests/cairo_pie_test.rs +++ b/vm/src/tests/cairo_pie_test.rs @@ -274,3 +274,23 @@ fn serialize_cairo_pie() { .unwrap(), ); } + +#[test] +#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] +fn run_pie_validity_checks_integration() { + // Run the program + let program_content = include_bytes!("../../../cairo_programs/integration.json"); + let mut hint_processor = BuiltinHintProcessor::new_empty(); + let (runner, vm) = cairo_run( + program_content, + &CairoRunConfig { + layout: LayoutName::all_cairo, + ..Default::default() + }, + &mut hint_processor, + ) + .expect("cairo_run failure"); + // Obtain the pie + let cairo_pie = runner.get_cairo_pie(&vm).expect("Failed to get pie"); + assert!(cairo_pie.run_validity_checks().is_ok()) +} diff --git a/vm/src/vm/runners/cairo_pie.rs b/vm/src/vm/runners/cairo_pie.rs index da70dc7cbf..87cc5207da 100644 --- a/vm/src/vm/runners/cairo_pie.rs +++ b/vm/src/vm/runners/cairo_pie.rs @@ -168,7 +168,7 @@ impl CairoPie { let validate_addr = |addr: Relocatable| -> Result<(), CairoPieValidationError> { if !segment_sizes .get(&addr.segment_index) - .is_some_and(|size| addr.offset < *size) + .is_some_and(|size| addr.offset <= *size) { return Err(CairoPieValidationError::InvalidAddress); }