From 705b4a432f37a5f855a2f37df236ad750eb92de0 Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Fri, 23 Sep 2022 17:56:28 -0700 Subject: [PATCH] fix length zero input issue --- evm/src/cpu/kernel/asm/ripemd/memory.asm | 4 ++-- evm/src/cpu/kernel/tests/ripemd.rs | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/evm/src/cpu/kernel/asm/ripemd/memory.asm b/evm/src/cpu/kernel/asm/ripemd/memory.asm index 1e93d809..e3d3141a 100644 --- a/evm/src/cpu/kernel/asm/ripemd/memory.asm +++ b/evm/src/cpu/kernel/asm/ripemd/memory.asm @@ -30,8 +30,8 @@ store_size: store_padding: // stack: i (init 63) %store_zeros(136, store_padding) - %jump(store_input_alt) - + %jumpi(store_input_alt) + %jump(ripemd_init) store_input_alt: // stack: rem, length, REM_INP diff --git a/evm/src/cpu/kernel/tests/ripemd.rs b/evm/src/cpu/kernel/tests/ripemd.rs index 3eca4506..bdd2b4af 100644 --- a/evm/src/cpu/kernel/tests/ripemd.rs +++ b/evm/src/cpu/kernel/tests/ripemd.rs @@ -4,6 +4,7 @@ use ethereum_types::U256; use crate::cpu::kernel::aggregator::combined_kernel; use crate::cpu::kernel::interpreter::run_with_kernel; + fn make_input(word: &str) -> Vec { let mut bytes: Vec = vec![word.len().try_into().unwrap()]; bytes.append(&mut word.as_bytes().to_vec()); @@ -12,8 +13,8 @@ fn make_input(word: &str) -> Vec { #[test] fn test_ripemd() -> Result<()> { - let input: Vec = make_input("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); - let expected = U256::from("0xb0e20b6e3116640286ed3a87a5713079b21f5189"); + let input: Vec = make_input(""); + let expected = U256::from("0x9c1185a5c5e9fc54612808977ee8f548b2258d31"); let kernel = combined_kernel(); let label = kernel.global_labels["ripemd_alt"];