diff options
author | Felix Lange <fjl@twurst.com> | 2017-02-23 00:55:04 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2017-03-02 21:05:46 +0800 |
commit | 357d00cdb1625e4a715e0b3928ef7bd3656a8d95 (patch) | |
tree | 4518eaeeaab9381d64c92aa8794882d313f72aad /common/hexutil | |
parent | f3b7dcc5bdd5b2b02e12133a0d8e16a75844f766 (diff) | |
download | dexon-357d00cdb1625e4a715e0b3928ef7bd3656a8d95.tar.gz dexon-357d00cdb1625e4a715e0b3928ef7bd3656a8d95.tar.zst dexon-357d00cdb1625e4a715e0b3928ef7bd3656a8d95.zip |
common/hexutil: don't leak encoding/hex errors in Decode
All other functions return errors from package hexutil, ensure that
Decode does too.
Diffstat (limited to 'common/hexutil')
-rw-r--r-- | common/hexutil/hexutil.go | 6 | ||||
-rw-r--r-- | common/hexutil/hexutil_test.go | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/common/hexutil/hexutil.go b/common/hexutil/hexutil.go index 16863f6c0..b66c0d3fe 100644 --- a/common/hexutil/hexutil.go +++ b/common/hexutil/hexutil.go @@ -60,7 +60,11 @@ func Decode(input string) ([]byte, error) { if !has0xPrefix(input) { return nil, ErrMissingPrefix } - return hex.DecodeString(input[2:]) + b, err := hex.DecodeString(input[2:]) + if err != nil { + err = mapError(err) + } + return b, err } // MustDecode decodes a hex string with 0x prefix. It panics for invalid input. diff --git a/common/hexutil/hexutil_test.go b/common/hexutil/hexutil_test.go index 68d8a40e0..d18f08833 100644 --- a/common/hexutil/hexutil_test.go +++ b/common/hexutil/hexutil_test.go @@ -18,7 +18,6 @@ package hexutil import ( "bytes" - "encoding/hex" "math/big" "testing" ) @@ -60,10 +59,10 @@ var ( // invalid {input: ``, wantErr: ErrEmptyString}, {input: `0`, wantErr: ErrMissingPrefix}, - {input: `0x0`, wantErr: hex.ErrLength}, - {input: `0x023`, wantErr: hex.ErrLength}, - {input: `0xxx`, wantErr: hex.InvalidByteError('x')}, - {input: `0x01zz01`, wantErr: hex.InvalidByteError('z')}, + {input: `0x0`, wantErr: ErrOddLength}, + {input: `0x023`, wantErr: ErrOddLength}, + {input: `0xxx`, wantErr: ErrSyntax}, + {input: `0x01zz01`, wantErr: ErrSyntax}, // valid {input: `0x`, want: []byte{}}, {input: `0X`, want: []byte{}}, |