From f69be6fadcf21cf9011dcdce2ded475f2aabbcff Mon Sep 17 00:00:00 2001 From: Say Cheong Date: Mon, 4 Dec 2023 19:09:07 +0900 Subject: [PATCH] Do not allow negative gas price or negative gas limit --- Lib9c.Policy/Policy/BlockPolicySource.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Lib9c.Policy/Policy/BlockPolicySource.cs b/Lib9c.Policy/Policy/BlockPolicySource.cs index 28df6ce2ec..634274d7bf 100644 --- a/Lib9c.Policy/Policy/BlockPolicySource.cs +++ b/Lib9c.Policy/Policy/BlockPolicySource.cs @@ -229,12 +229,21 @@ internal static TxPolicyViolationException ValidateNextBlockTxRaw( return null; } } - if (transaction.MaxGasPrice is null || transaction.GasLimit is null) + + if (!(transaction.MaxGasPrice is { } gasPrice && transaction.GasLimit is { } gasLimit)) + { + return new TxPolicyViolationException( + "Transaction has no gas price or limit.", + transaction.Id); + } + + if (gasPrice.Sign < 0 || gasLimit < 0) { - return new - TxPolicyViolationException("Transaction has no gas price or limit.", + return new TxPolicyViolationException( + "Transaction has negative gas price or limit.", transaction.Id); } + if (transaction.MaxGasPrice * transaction.GasLimit > blockChain.GetBalance(transaction.Signer, Currencies.Mead)) { return new TxPolicyViolationException(