diff --git a/rpc/args.go b/rpc/args.go index 9f99456e6c..7694a3d3f4 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -535,11 +535,11 @@ func (args *BlockNumIndexArgs) UnmarshalJSON(b []byte) (err error) { return err } - arg1, ok := obj[1].(string) - if !ok { - return NewInvalidTypeError("index", "not a string") + var arg1 *big.Int + if arg1, err = numString(obj[1]); err != nil { + return err } - args.Index = common.Big(arg1).Int64() + args.Index = arg1.Int64() return nil } diff --git a/rpc/args_test.go b/rpc/args_test.go index e78981a41c..9e0cf179f3 100644 --- a/rpc/args_test.go +++ b/rpc/args_test.go @@ -2264,7 +2264,7 @@ func TestBlockNumIndexArgsBlocknumInvalid(t *testing.T) { } func TestBlockNumIndexArgsIndexInvalid(t *testing.T) { - input := `["0x29a", 1]` + input := `["0x29a", true]` args := new(BlockNumIndexArgs) str := ExpectInvalidTypeError(json.Unmarshal([]byte(input), &args))