summaryrefslogtreecommitdiffstats
path: root/src/scripts
diff options
context:
space:
mode:
authorMichael Brown2021-06-07 13:01:10 +0200
committerMichael Brown2021-06-07 13:01:10 +0200
commit92807f5759e0207aaa909ee0e1429478f210aff1 (patch)
treed5378ce55e0be18014e8c443e3bcf6219ac8eedf /src/scripts
parent[ath5k] Avoid returning uninitialised data on EEPROM read errors (diff)
downloadipxe-92807f5759e0207aaa909ee0e1429478f210aff1.tar.gz
ipxe-92807f5759e0207aaa909ee0e1429478f210aff1.tar.xz
ipxe-92807f5759e0207aaa909ee0e1429478f210aff1.zip
[rndis] Fix size of reserved fields
Most RNDIS data structures include a trailing 4-byte reserved field. For the REMOTE_NDIS_PACKET_MSG and REMOTE_NDIS_INITIALIZE_CMPLT structures, this is an 8-byte field instead. iPXE currently uses incorrect structure definitions with a 4-byte reserved field in all data structures, resulting in data payloads that overlap the last 4 bytes of the 8-byte reserved field. RNDIS uses explicit offsets to locate any data payloads beyond the message header, and so liberal RNDIS parsers (such as those used in Hyper-V and in the Linux USB Ethernet gadget driver) are still able to parse the malformed structures. A stricter RNDIS parser (such as that found in some older Android builds that seem to use an out-of-tree USB Ethernet gadget driver) may reject the malformed structures since the data payload offset is less than the header length, causing iPXE to be unable to transmit packets. Fix by correcting the length of the reserved fields. Debugged-by: Martin Nield <pmn1492@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/scripts')
0 files changed, 0 insertions, 0 deletions