aboutsummaryrefslogtreecommitdiffstats
path: root/common/hexutil/json.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2017-02-23 00:35:11 +0800
committerFelix Lange <fjl@twurst.com>2017-03-02 21:05:46 +0800
commitf3b7dcc5bdd5b2b02e12133a0d8e16a75844f766 (patch)
tree8ec56c1b7e2aa996184a8b8c5f1a1d9eefb4f92b /common/hexutil/json.go
parentc52ab932e61ef9eba37c107e8b58b22c7d32e6c2 (diff)
downloadgo-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.tar
go-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.tar.gz
go-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.tar.bz2
go-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.tar.lz
go-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.tar.xz
go-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.tar.zst
go-tangerine-f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766.zip
common/hexutil: reject big integer inputs > 256 bits
This follows the change to common/math big integer parsing in PR #3699.
Diffstat (limited to 'common/hexutil/json.go')
-rw-r--r--common/hexutil/json.go12
1 files changed, 9 insertions, 3 deletions
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 {