rlp: fix decoding long strings into RawValue types
This commit is contained in:
parent
3c48a25762
commit
63246e2542
@ -693,7 +693,7 @@ func (s *Stream) Raw() ([]byte, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if kind == String {
|
if kind == String {
|
||||||
puthead(buf, 0x80, 0xB8, size)
|
puthead(buf, 0x80, 0xB7, size)
|
||||||
} else {
|
} else {
|
||||||
puthead(buf, 0xC0, 0xF7, size)
|
puthead(buf, 0xC0, 0xF7, size)
|
||||||
}
|
}
|
||||||
|
@ -256,16 +256,31 @@ func TestStreamList(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStreamRaw(t *testing.T) {
|
func TestStreamRaw(t *testing.T) {
|
||||||
s := NewStream(bytes.NewReader(unhex("C58401010101")), 0)
|
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()
|
s.List()
|
||||||
|
|
||||||
want := unhex("8401010101")
|
want := unhex(tt.output)
|
||||||
raw, err := s.Raw()
|
raw, err := s.Raw()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if !bytes.Equal(want, raw) {
|
if !bytes.Equal(want, raw) {
|
||||||
t.Errorf("raw mismatch: got %x, want %x", raw, want)
|
t.Errorf("test %d: raw mismatch: got %x, want %x", i, raw, want)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user