From d617f4fcdb11d02b4482765d9b6e8e7e1d44e046 Mon Sep 17 00:00:00 2001 From: Stavros Vlachakis <89769224+svlachakis@users.noreply.github.com> Date: Fri, 3 Jul 2026 09:31:53 +0300 Subject: [PATCH] rpc: reject block parameter with neither number nor hash (#35271) --- rpc/types.go | 3 +++ rpc/types_test.go | 2 ++ 2 files changed, 5 insertions(+) diff --git a/rpc/types.go b/rpc/types.go index 578d3f86dd..7720a8d9c6 100644 --- a/rpc/types.go +++ b/rpc/types.go @@ -158,6 +158,9 @@ func (bnh *BlockNumberOrHash) UnmarshalJSON(data []byte) error { if e.BlockNumber != nil && e.BlockHash != nil { return errors.New("cannot specify both BlockHash and BlockNumber, choose one or the other") } + if e.BlockNumber == nil && e.BlockHash == nil { + return errors.New("must specify either BlockHash or BlockNumber") + } bnh.BlockNumber = e.BlockNumber bnh.BlockHash = e.BlockHash bnh.RequireCanonical = e.RequireCanonical diff --git a/rpc/types_test.go b/rpc/types_test.go index 9dd6fa6508..35294c3dba 100644 --- a/rpc/types_test.go +++ b/rpc/types_test.go @@ -109,6 +109,8 @@ func TestBlockNumberOrHash_UnmarshalJSON(t *testing.T) { 27: {`{"blockNumber":"safe"}`, false, BlockNumberOrHashWithNumber(SafeBlockNumber)}, 28: {`{"blockNumber":"finalized"}`, false, BlockNumberOrHashWithNumber(FinalizedBlockNumber)}, 29: {`{"blockNumber":"0x1", "blockHash":"0x0000000000000000000000000000000000000000000000000000000000000000"}`, true, BlockNumberOrHash{}}, + 30: {`{}`, true, BlockNumberOrHash{}}, + 31: {`{"requireCanonical":true}`, true, BlockNumberOrHash{}}, } for i, test := range tests {