david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[romprefix] Avoid unaligned accesses within ROM headers

Ensure that all headers (PCI, UNDI, PnP, iPXE) are aligned to at least
four bytes, so that all accesses to header fields will be correctly
aligned even when reading directly from the expansion ROM BAR.

Reported-by: Peter von Konigsmark <peter@exablaze.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2017-08-30 10:15:25 +01:00
parent 8b104d881a
commit 75acb3c775
2 changed files with 4 additions and 0 deletions

View File

@ -492,6 +492,7 @@ mromheader:
.word 0
.size mromheader, . - mromheader
.align 4
mpciheader:
.ascii "PCIR" /* Signature */
.word pci_vendor_id /* Vendor identification */

View File

@ -88,6 +88,7 @@ checksum:
.previous
.ifeqs BUSTYPE, "PCIR"
.align 4
pciheader:
.ascii "PCIR" /* Signature */
.word pci_vendor_id /* Vendor identification */
@ -183,6 +184,7 @@ prodstr_pci_id:
.globl undiheader
.weak undiloader
.align 4
undiheader:
.ascii "UNDI" /* Signature */
.byte undiheader_len /* Length of structure */
@ -197,6 +199,7 @@ undiheader:
.equ undiheader_len, . - undiheader
.size undiheader, . - undiheader
.align 4
ipxeheader:
.ascii "iPXE" /* Signature */
.byte ipxeheader_len /* Length of structure */