aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-08-24 18:10:50 +0800
committerPéter Szilágyi <peterke@gmail.com>2017-08-24 18:10:50 +0800
commit63246e25426df51143d5fb06861d418753267ab1 (patch)
tree711774deb70cb5763ca5fac9d453a5a772ef67b5
parent3c48a25762dfab9382791c33a2f5832466077ac3 (diff)
downloadgo-tangerine-63246e25426df51143d5fb06861d418753267ab1.tar
go-tangerine-63246e25426df51143d5fb06861d418753267ab1.tar.gz
go-tangerine-63246e25426df51143d5fb06861d418753267ab1.tar.bz2
go-tangerine-63246e25426df51143d5fb06861d418753267ab1.tar.lz
go-tangerine-63246e25426df51143d5fb06861d418753267ab1.tar.xz
go-tangerine-63246e25426df51143d5fb06861d418753267ab1.tar.zst
go-tangerine-63246e25426df51143d5fb06861d418753267ab1.zip
rlp: fix decoding long strings into RawValue types
-rw-r--r--rlp/decode.go2
-rw-r--r--rlp/decode_test.go35
2 files changed, 26 insertions, 11 deletions
diff --git a/rlp/decode.go b/rlp/decode.go
index 78ccf6275..60d9dab2b 100644
--- a/rlp/decode.go
+++ b/rlp/decode.go
@@ -693,7 +693,7 @@ func (s *Stream) Raw() ([]byte, error) {
return nil, err
}
if kind == String {
- puthead(buf, 0x80, 0xB8, size)
+ puthead(buf, 0x80, 0xB7, size)
} else {
puthead(buf, 0xC0, 0xF7, size)
}
diff --git a/rlp/decode_test.go b/rlp/decode_test.go
index d762e195d..4d8abd001 100644
--- a/rlp/decode_test.go
+++ b/rlp/decode_test.go
@@ -256,16 +256,31 @@ func TestStreamList(t *testing.T) {
}
func TestStreamRaw(t *testing.T) {
- s := NewStream(bytes.NewReader(unhex("C58401010101")), 0)
- s.List()
-
- want := unhex("8401010101")
- raw, err := s.Raw()
- if err != nil {
- t.Fatal(err)
- }
- if !bytes.Equal(want, raw) {
- t.Errorf("raw mismatch: got %x, want %x", raw, want)
+ tests := []struct {
+ input string
+ output string
+ }{
+ {
+ "C58401010101",
+ "8401010101",
+ },
+ {
+ "F842B84001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101",
+ "B84001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101",
+ },
+ }
+ for i, tt := range tests {
+ s := NewStream(bytes.NewReader(unhex(tt.input)), 0)
+ s.List()
+
+ want := unhex(tt.output)
+ raw, err := s.Raw()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !bytes.Equal(want, raw) {
+ t.Errorf("test %d: raw mismatch: got %x, want %x", i, raw, want)
+ }
}
}