From ad9a53f486b6b9e5af4205940d8bec92c7415666 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 12 Sep 2019 16:38:25 +0200 Subject: [PATCH] add more tx tests (#11038) --- ethcore/types/src/transaction/transaction.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ethcore/types/src/transaction/transaction.rs b/ethcore/types/src/transaction/transaction.rs index 6e99dc429..bdbc302fc 100644 --- a/ethcore/types/src/transaction/transaction.rs +++ b/ethcore/types/src/transaction/transaction.rs @@ -54,7 +54,11 @@ impl Default for Action { impl rlp::Decodable for Action { fn decode(rlp: &Rlp) -> Result { if rlp.is_empty() { - Ok(Action::Create) + if rlp.is_data() { + Ok(Action::Create) + } else { + Err(DecoderError::RlpExpectedToBeData) + } } else { Ok(Action::Call(rlp.as_val()?)) } @@ -571,6 +575,20 @@ mod tests { assert_eq!(t.chain_id(), None); } + #[test] + fn empty_atom_as_create_action() { + let empty_atom = [0x80]; + let action: Action = rlp::decode(&empty_atom).unwrap(); + assert_eq!(action, Action::Create); + } + + #[test] + fn empty_list_as_create_action_rejected() { + let empty_list = [0xc0]; + let action: Result = rlp::decode(&empty_list); + assert_eq!(action, Err(DecoderError::RlpExpectedToBeData)); + } + #[test] fn signing_eip155_zero_chainid() { use ethkey::{Random, Generator};