aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2020-10-14 14:05:03 +0100
committerMichael Brown <mcb30@ipxe.org>2020-10-14 14:18:49 +0100
commit388d657080d5088ab7832fcb0ec71a9a50c3a59f (patch)
treeb8485c92a107952fb0c1953cc6a034eb844a2607
parent3d43789914b99b838ddd75c1c656e674a6807fb7 (diff)
downloadipxe-388d657080d5088ab7832fcb0ec71a9a50c3a59f.tar.gz
[lacp] Ignore (and do not echo) trailing padding on received packets
The LACP responder reuses the received I/O buffer to construct the response LACP (or marker) packet. Any received padding will therefore be unintentionally included within the response. Truncate the received I/O buffer to the expected length (which is already defined in a way to allow for future protocol expansion) before reusing it to construct the response. Reported-by: Tore Anderson <tore@fud.no> Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/net/eth_slow.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/net/eth_slow.c b/src/net/eth_slow.c
index fa7a6e361..1103a49f3 100644
--- a/src/net/eth_slow.c
+++ b/src/net/eth_slow.c
@@ -286,6 +286,9 @@ static int eth_slow_rx ( struct io_buffer *iobuf,
return -EINVAL;
}
+ /* Strip any trailing padding */
+ iob_unput ( iobuf, ( sizeof ( *eth_slow ) - iob_len ( iobuf ) ) );
+
/* Handle according to subtype */
switch ( eth_slow->header.subtype ) {
case ETH_SLOW_SUBTYPE_LACP: