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 | ||||
| 	} | ||||
| 	if kind == String { | ||||
| 		puthead(buf, 0x80, 0xB8, size) | ||||
| 		puthead(buf, 0x80, 0xB7, size) | ||||
| 	} else { | ||||
| 		puthead(buf, 0xC0, 0xF7, size) | ||||
| 	} | ||||
|  | ||||
| @ -256,16 +256,31 @@ func TestStreamList(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() | ||||
| 
 | ||||
| 	want := unhex("8401010101") | ||||
| 		want := unhex(tt.output) | ||||
| 		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) | ||||
| 			t.Errorf("test %d: raw mismatch: got %x, want %x", i, raw, want) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user