common/hexutil: don't leak encoding/hex errors in Decode

All other functions return errors from package hexutil, ensure that
Decode does too.
pull/3722/head
Felix Lange 8 years ago
parent f3b7dcc5bd
commit 357d00cdb1
  1. 6
      common/hexutil/hexutil.go
  2. 9
      common/hexutil/hexutil_test.go

@ -60,7 +60,11 @@ func Decode(input string) ([]byte, error) {
if !has0xPrefix(input) { if !has0xPrefix(input) {
return nil, ErrMissingPrefix 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. // MustDecode decodes a hex string with 0x prefix. It panics for invalid input.

@ -18,7 +18,6 @@ package hexutil
import ( import (
"bytes" "bytes"
"encoding/hex"
"math/big" "math/big"
"testing" "testing"
) )
@ -60,10 +59,10 @@ var (
// invalid // invalid
{input: ``, wantErr: ErrEmptyString}, {input: ``, wantErr: ErrEmptyString},
{input: `0`, wantErr: ErrMissingPrefix}, {input: `0`, wantErr: ErrMissingPrefix},
{input: `0x0`, wantErr: hex.ErrLength}, {input: `0x0`, wantErr: ErrOddLength},
{input: `0x023`, wantErr: hex.ErrLength}, {input: `0x023`, wantErr: ErrOddLength},
{input: `0xxx`, wantErr: hex.InvalidByteError('x')}, {input: `0xxx`, wantErr: ErrSyntax},
{input: `0x01zz01`, wantErr: hex.InvalidByteError('z')}, {input: `0x01zz01`, wantErr: ErrSyntax},
// valid // valid
{input: `0x`, want: []byte{}}, {input: `0x`, want: []byte{}},
{input: `0X`, want: []byte{}}, {input: `0X`, want: []byte{}},

Loading…
Cancel
Save