You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
encoding/binary: ReadUvarint and ReadVarint can read an unlimited number of bytes from invalid inputs #40618
Certain invalid inputs to ReadUvarint or ReadVarint could cause those functions to read an unlimited number of bytes from the ByteReader argument before returning an error. This could lead to processing more input than expected when the caller is reading directly from the network and depends on ReadUvarint and ReadVarint only consuming a small, bounded number of bytes, even from invalid inputs.
With the update, ReadUvarint and ReadVarint now always return after consuming a bounded number of bytes (specifically, MaxVarintLen64, which is 10). The result being returned has not changed; the functions merely detect and return some errors without reading as much input.
Thanks to Diederik Loerakker, Jonny Rhea, Raúl Kripalani, and Preston Van Loon for reporting this issue.
Activity
gopherbot commentedon Aug 6, 2020
Change https://golang.org/cl/247120 mentions this issue:
encoding/binary: read at most MaxVarintLen64 bytes in ReadUvarintencoding/binary: read at most MaxVarintLen64 bytes in ReadUvarint
tendermint security update
tendermint security update (#7555)