rpcsrv: filter out invalid getblocknotifications requests

Unknown fields are not allowed.

Signed-off-by: Roman Khimov <roman@nspcc.ru>
This commit is contained in:
Roman Khimov 2025-02-11 15:52:02 +03:00
parent bd170fb849
commit cb4aba497e
2 changed files with 13 additions and 1 deletions

View file

@ -3220,8 +3220,14 @@ func (s *Server) getBlockNotifications(reqParams params.Params) (any, *neorpc.Er
var filter *neorpc.NotificationFilter
if len(reqParams) > 1 {
var (
reader = bytes.NewBuffer([]byte(reqParams[1].RawMessage))
decoder = json.NewDecoder(reader)
)
decoder.DisallowUnknownFields()
filter = new(neorpc.NotificationFilter)
err := json.Unmarshal(reqParams[1].RawMessage, filter)
err := decoder.Decode(filter)
if err != nil {
return nil, neorpc.WrapErrorWithData(neorpc.ErrInvalidParams, fmt.Sprintf("invalid filter: %s", err))
}

View file

@ -2318,6 +2318,12 @@ var rpcTestCases = map[string][]rpcTestCase{
fail: true,
errCode: neorpc.InvalidParamsCode,
},
{
name: "filter with unknown fields",
params: `["` + genesisBlockHash + `", {"invalid":"something"}]`,
fail: true,
errCode: neorpc.InvalidParamsCode,
},
},
}