diff --git a/programs/bpf_loader/src/syscalls.rs b/programs/bpf_loader/src/syscalls.rs index 6483c523a5..954b712892 100644 --- a/programs/bpf_loader/src/syscalls.rs +++ b/programs/bpf_loader/src/syscalls.rs @@ -847,6 +847,12 @@ fn call<'a>( let account = account.borrow(); if message.is_writable(i) && !account.executable { *lamport_ref = account.lamports; + if data.len() != account.data.len() { + return Err(SyscallError::InstructionError( + InstructionError::AccountDataSizeChanged, + ) + .into()); + } data.clone_from_slice(&account.data); } }