Skip to content

Commit bb5b22e

Browse files
feat(starknet_os): verify syscall_ptr
1 parent eef2a43 commit bb5b22e

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

crates/starknet_os/src/hint_processor/snos_deprecated_syscall_executor.rs

-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ impl DeprecatedSyscallExecutor for DeprecatedSyscallHintProcessor {
5555
actual_ptr,
5656
});
5757
}
58-
5958
Ok(())
6059
}
6160

crates/starknet_os/src/hints/hint_implementation/syscalls.rs

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use blockifier::execution::deprecated_syscalls::deprecated_syscall_executor::execute_next_deprecated_syscall;
2+
use blockifier::execution::deprecated_syscalls::DeprecatedSyscallSelector;
3+
use blockifier::execution::execution_utils::felt_from_ptr;
24
use blockifier::state::state_api::StateReader;
35
use cairo_vm::hint_processor::builtin_hint_processor::hint_utils::get_ptr_from_var_name;
6+
use paste::paste;
47

58
use crate::hints::error::OsHintResult;
69
use crate::hints::types::HintArgs;
@@ -27,17 +30,32 @@ macro_rules! create_syscall_func {
2730
($($name:ident),+) => {
2831
$(
2932
pub(crate) fn $name<S: StateReader>(
30-
HintArgs { hint_processor, vm, ids_data, ap_tracking, exec_scopes, .. }: HintArgs<'_, '_, S>
33+
HintArgs {
34+
hint_processor,
35+
vm,
36+
ids_data,
37+
ap_tracking,
38+
exec_scopes,
39+
..
40+
}: HintArgs<'_, '_, S>
3141
) -> OsHintResult {
3242
assert_eq!(
3343
exec_scopes.get::<SyscallHandlerType>(Scope::SyscallHandlerType.into())?,
3444
SyscallHandlerType::DeprecatedSyscallHandler
3545
);
3646
let syscall_hint_processor = &mut hint_processor.deprecated_syscall_hint_processor;
37-
// TODO(Aner): need to verify that the correct syscall is being called (i.e.,
38-
// syscall_ptr matches the fn name). E.g., set syscall_ptr from fn name.
47+
let mut syscall_ptr = get_ptr_from_var_name(
48+
Ids::SyscallPtr.into(), vm, ids_data, ap_tracking
49+
)?;
50+
let syscall_selector = DeprecatedSyscallSelector::try_from(
51+
felt_from_ptr(vm, &mut syscall_ptr)?
52+
).unwrap();
53+
// TODO(Aner): should return an error instead of panic.
54+
paste!{
55+
assert_eq!(syscall_selector, DeprecatedSyscallSelector::[<$name:camel>]);
56+
}
3957
syscall_hint_processor.set_syscall_ptr(
40-
get_ptr_from_var_name(Ids::SyscallPtr.into(), vm, ids_data, ap_tracking)?
58+
syscall_ptr,
4159
);
4260
Ok(
4361
execute_next_deprecated_syscall(

0 commit comments

Comments
 (0)