Bound number of assets which can be withdrawn to pay for execution. (#7641)

* Bound number of assets which can be withdrawn to pay for execution.

* ".git/.scripts/commands/fmt/fmt.sh"

* Include ClaimAsset in limiting the assets

* Change max assets to constant

---------

Co-authored-by: command-bot <>
Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
This commit is contained in:
Gavin Wood
2023-08-22 13:19:05 +02:00
committed by GitHub
parent e0a2c78a43
commit 26be0727e5
+6 -4
View File
@@ -52,6 +52,8 @@ impl ShouldExecute for TakeWeightCredit {
}
}
const MAX_ASSETS_FOR_BUY_EXECUTION: usize = 1;
/// Allows execution from `origin` if it is contained in `T` (i.e. `T::Contains(origin)`) taking
/// payments into account.
///
@@ -79,10 +81,10 @@ impl<T: Contains<MultiLocation>> ShouldExecute for AllowTopLevelPaidExecutionFro
instructions[..end]
.matcher()
.match_next_inst(|inst| match inst {
ReceiveTeleportedAsset(..) |
WithdrawAsset(..) |
ReserveAssetDeposited(..) |
ClaimAsset { .. } => Ok(()),
ReceiveTeleportedAsset(..) | ReserveAssetDeposited(..) => Ok(()),
WithdrawAsset(ref assets) if assets.len() <= MAX_ASSETS_FOR_BUY_EXECUTION => Ok(()),
ClaimAsset { ref assets, .. } if assets.len() <= MAX_ASSETS_FOR_BUY_EXECUTION =>
Ok(()),
_ => Err(ProcessMessageError::BadFormat),
})?
.skip_inst_while(|inst| matches!(inst, ClearOrigin))?