Ver código fonte

validator/verification: check tx call has payload data in verify_transaction()

skoupidi 2 meses atrás
pai
commit
eb23d26b5e
1 arquivos alterados com 6 adições e 0 exclusões
  1. 6 0
      src/validator/verification.rs

+ 6 - 0
src/validator/verification.rs

@@ -722,6 +722,12 @@ pub async fn verify_transaction(
     for (idx, call) in tx.calls.iter().enumerate() {
     for (idx, call) in tx.calls.iter().enumerate() {
         debug!(target: "validator::verification::verify_transaction", "Executing contract call {idx}");
         debug!(target: "validator::verification::verify_transaction", "Executing contract call {idx}");
 
 
+        // Transaction must contain a function code
+        if call.data.data.is_empty() {
+            error!(target: "validator::verification::verify_transaction", "Call contains no data");
+            return Err(TxVerifyFailed::ErroneousTxs(vec![tx.clone()]).into())
+        }
+
         // Transaction must not contain a Pow reward call
         // Transaction must not contain a Pow reward call
         if call.data.is_money_pow_reward() {
         if call.data.is_money_pow_reward() {
             error!(target: "validator::verification::verify_transaction", "Reward transaction detected");
             error!(target: "validator::verification::verify_transaction", "Reward transaction detected");