mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
siw_get_hdr() can receive an extended DDP/RDMAP header across more than
one TCP callback. The first callback may receive most of the header,
while the next one still limits the copy to hdrlen - MIN_DDP_HDR instead
of the number of missing bytes. This makes the destination move past the
end of the header and overwrite the receive state, including
fpdu_part_rcvd. A later callback can then use a negative fpdu_part_rcvd
value as a copy offset, which creates an OOB write.
Use the number of header bytes already received when calculating the
next copy length.
Fixes:
|
||
|---|---|---|
| .. | ||
| rdmavt | ||
| rxe | ||
| siw | ||
| Makefile | ||