diff --git a/.changeset/validate_rpcfundaccountsrequest.md b/.changeset/validate_rpcfundaccountsrequest.md new file mode 100644 index 0000000..c58839d --- /dev/null +++ b/.changeset/validate_rpcfundaccountsrequest.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +# Validate RPCFundAccountsRequest diff --git a/rhp/v4/rpc.go b/rhp/v4/rpc.go index a2a99c7..455a464 100644 --- a/rhp/v4/rpc.go +++ b/rhp/v4/rpc.go @@ -689,6 +689,10 @@ func RPCFundAccounts(ctx context.Context, t TransportClient, cs consensus.State, RenterSignature: revision.RenterSignature, } + if err := req.Validate(); err != nil { + return RPCFundAccountResult{}, fmt.Errorf("invalid request: %w", err) + } + var resp rhp4.RPCFundAccountsResponse if err := callSingleRoundtripRPC(ctx, t, rhp4.RPCFundAccountsID, &req, &resp); err != nil { return RPCFundAccountResult{}, err diff --git a/rhp/v4/server.go b/rhp/v4/server.go index 7b91fb3..cac60c1 100644 --- a/rhp/v4/server.go +++ b/rhp/v4/server.go @@ -397,6 +397,8 @@ func (s *Server) handleRPCFundAccounts(stream net.Conn) error { var req rhp4.RPCFundAccountsRequest if err := rhp4.ReadRequest(stream, &req); err != nil { return errorDecodingError("failed to read request: %v", err) + } else if err := req.Validate(); err != nil { + return err } state, unlock, err := s.lockContractForRevision(req.ContractID)