fix(net): cap the length of a server line
A hostile server could stream an endless line with no newline and exhaust the client's memory. A single reply is now capped at 16 MiB (configurable via maxLineBytes in ConnectAsync); on excess the connection fails with InvalidDataException. See ADR 0035.
This commit is contained in:
1 parent
3be761d97e
commit
65c515bf7a
7 files changed
+121
-3
No files matched your search
@@ -9,6 +9,10 @@ release and covers the full history from the initial commit.
|
||||
|
||||
### Fixed
|
||||
|
||||
- `ElectrumClient`: a single server reply is now capped at 16 MiB (`maxLineBytes` in
|
||||
`ConnectAsync`). A hostile server could stream an endless line with no newline and exhaust the
|
||||
client's memory; the connection now fails with `InvalidDataException` as soon as the cap is
|
||||
exceeded.
|
||||
- `ElectrumClient`: every request is now bounded (30 s, 10 s for the handshake; configurable in
|
||||
`ConnectAsync`). A server that stops answering without closing the socket made a running sync
|
||||
wait forever; now the request fails with `TimeoutException`, the connection is marked dead
|
||||
|
||||
Reference in new issue
Block a user