From f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 22 Feb 2017 17:35:11 +0100 Subject: common/hexutil: reject big integer inputs > 256 bits This follows the change to common/math big integer parsing in PR #3699. --- common/hexutil/json.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'common/hexutil/json.go') diff --git a/common/hexutil/json.go b/common/hexutil/json.go index 7e4736dd6..6174d6256 100644 --- a/common/hexutil/json.go +++ b/common/hexutil/json.go @@ -91,9 +91,12 @@ func UnmarshalJSON(typname string, input, out []byte) error { return nil } -// Big marshals/unmarshals as a JSON string with 0x prefix. The zero value marshals as -// "0x0". Negative integers are not supported at this time. Attempting to marshal them -// will return an error. +// Big marshals/unmarshals as a JSON string with 0x prefix. +// The zero value marshals as "0x0". +// +// Negative integers are not supported at this time. Attempting to marshal them will +// return an error. Values larger than 256bits are rejected by Unmarshal but will be +// marshaled without error. type Big big.Int // MarshalJSON implements json.Marshaler. @@ -119,6 +122,9 @@ func (b *Big) UnmarshalJSON(input []byte) error { if err != nil { return err } + if len(raw) > 64 { + return ErrBig256Range + } words := make([]big.Word, len(raw)/bigWordNibbles+1) end := len(raw) for i := range words { -- cgit v1.2.3