| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
| |
These functions allow destructuring of raw rlp-encoded bytes
without the overhead of reflection or copying.
|
|
|
|
|
|
| |
The bug can cause crashes if Read is called after EOF has been returned.
No code performs such calls right now, but hitting the bug gets more
likely as rlp.EncodeToReader gets used in more places.
|
| |
|
|
|
|
| |
I forgot to update one instance of "go-ethereum" in commit 3f047be5a.
|
|
|
|
|
| |
All code outside of cmd/ is licensed as LGPL. The headers
now reflect this by calling the whole work "the go-ethereum library".
|
|
|
|
|
|
| |
Decoding did not reject byte arrays of length one with a single element
b where 55 < b < 128. Such byte arrays must be rejected because
they must be encoded as the single byte b instead.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The list size checking overflowed if the size information
for a value was bigger than the list. This is resolved by
always performing the check before reading.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The rules have changed as follows:
* When decoding into pointers, empty values no longer produce
a nil pointer. This can be overriden for struct fields using the
struct tag "nil".
* When decoding into structs, the input list must contain an element
for each field.
|
|
|
|
|
| |
Input strings of length 1 containing a byte < 56 are non-minimal and
should be encoded as a single byte instead. Reject such strings.
|
|
|
|
|
|
|
| |
All integers (including size information in type tags) need to be
encoded using the smallest possible encoding. This commit expands the
stricter validation introduced for *big.Int in commit 59597d23a5ee268
to all integer types and size tags.
|
|
|
|
|
|
| |
A single zero byte carries information and should not set the pointer
to nil. This is arguably a corner case. While here, fix the comment
to explain pointer reuse.
|
|
|
|
| |
It is not safe to add anything to s.size.
|
|
|
|
|
|
| |
This is a preliminary fix for #420 (SEC-18 RLP decoder unsafe
allocation). If a sane input limit is set on the rlp.Stream,
it should no longer be possible to cause huge []byte allocations.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The generic pointer decoder did not advance the input position
for empty values. This can lead to strange issues and even
infinite loops.
|
|
|
|
|
|
| |
The encoder was missing a special case for one element strings whose
element is below 0x7f. Such strings must be encoded as a single byte
without a string header.
|
|
|
|
| |
Über-convenience.
|
|
|
|
| |
All other pointer types can handle nil just fine.
|
|\ |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
| |
This needs to be supported because []someInterface does occur sometimes.
Funny enough, the fix involves changes to the decoder. makeDecoder
cannot return an error for non-empty interfaces anymore because the type
cache builds both decoder and writer. Do the check at 'runtime' instead.
|
| |
|
|
|
|
|
|
|
|
| |
I'm reasonably confident that the encoding matches the output of
ethutil.Encode for values that it supports. Some of the tests have been
adpated from the Ethereum testing repository.
There are still TODOs in the code.
|
| |
|
|
|
|
|
| |
Decode error messages now say "expected input list for foo.MyStruct"
instead of just "expected List".
|
| |
|
|
|
|
|
| |
The documentation for reflect.Value.Index states that it will
panic for out-of-bounds indices. Since go 1.4, it actually panics.
|
|
|
|
|
| |
There is no agreement on how to encode negative integers
across implementations. cpp-ethereum doesn't support them either.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|