Просмотр исходного кода

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

skoupidi 2 месяцев назад
Родитель
Сommit
eb23d26b5e
1 измененных файлов с 6 добавлено и 0 удалено
  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() {
         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
         if call.data.is_money_pow_reward() {
             error!(target: "validator::verification::verify_transaction", "Reward transaction detected");