diff --git a/src/RpcServer/RpcServer.SmartContract.cs b/src/RpcServer/RpcServer.SmartContract.cs index e09268581..6ccf10965 100644 --- a/src/RpcServer/RpcServer.SmartContract.cs +++ b/src/RpcServer/RpcServer.SmartContract.cs @@ -172,6 +172,11 @@ private static JObject ToJson(StackItem item, Session session) private static Signer[] SignersFromJson(JArray _params, ProtocolSettings settings) { + if (_params.Count > Transaction.MaxTransactionAttributes) + { + throw new RpcException(-100, "Max allowed witness exceeded."); + } + var ret = _params.Select(u => new Signer { Account = AddressToScriptHash(u["account"].AsString(), settings.AddressVersion), @@ -190,6 +195,11 @@ private static Signer[] SignersFromJson(JArray _params, ProtocolSettings setting private static Witness[] WitnessesFromJson(JArray _params) { + if (_params.Count > Transaction.MaxTransactionAttributes) + { + throw new RpcException(-100, "Max allowed witness exceeded."); + } + return _params.Select(u => new { Invocation = u["invocation"]?.AsString(),