Enforce move loader program account size (#6385)

automerge
This commit is contained in:
Jack May
2019-10-15 23:42:59 -07:00
committed by Grimes
parent a3ccbe02d0
commit 609d6cdf61

View File

@@ -111,10 +111,10 @@ impl MoveProcessor {
Ok(()) Ok(())
} }
fn serialize_verified_program( fn verify_program(
script: &VerifiedScript, script: &VerifiedScript,
modules: &[VerifiedModule], modules: &[VerifiedModule],
) -> Result<(Vec<u8>), InstructionError> { ) -> Result<(LibraAccountState), InstructionError> {
let mut script_bytes = vec![]; let mut script_bytes = vec![];
script script
.as_inner() .as_inner()
@@ -129,11 +129,10 @@ impl MoveProcessor {
.map_err(map_failure_error)?; .map_err(map_failure_error)?;
modules_bytes.push(buf); modules_bytes.push(buf);
} }
bincode::serialize(&LibraAccountState::VerifiedProgram { Ok(LibraAccountState::VerifiedProgram {
script_bytes, script_bytes,
modules_bytes, modules_bytes,
}) })
.map_err(map_data_error)
} }
fn deserialize_compiled_program( fn deserialize_compiled_program(
@@ -330,8 +329,11 @@ impl MoveProcessor {
.collect::<Result<Vec<_>, _>>() .collect::<Result<Vec<_>, _>>()
.map_err(map_vm_verification_error)?; .map_err(map_vm_verification_error)?;
keyed_accounts[PROGRAM_INDEX].account.data = Self::serialize_and_enforce_length(
Self::serialize_verified_program(&verified_script, &verified_modules)?; &Self::verify_program(&verified_script, &verified_modules)?,
&mut keyed_accounts[PROGRAM_INDEX].account.data,
)?;
keyed_accounts[PROGRAM_INDEX].account.executable = true; keyed_accounts[PROGRAM_INDEX].account.executable = true;
info!( info!(