uefisign: fix SizeOfHeaders sanity check.
This check was too aggressive: it is fine if SizeOfHeaders is exactly equal to the size of the DOS stub + PE header + section table. Despite being wrong this code typically worked for most EFI binaries because SizeOfHeaders is rounded up to a multiple of FileAlignment, which is often large (e.g., 512 bytes for the FreeBSD loader) so most binaries made it through. Reviewed by: imp@ Sponsored by: Netflix Pull Request: https://github.com/freebsd/freebsd-src/pull/445
This commit is contained in:
parent
37f780d3e0
commit
5deb350025
@ -232,7 +232,7 @@ parse_section_table(struct executable *x, off_t off, int number_of_sections)
|
||||
range_check(x, off, sizeof(*psh) * number_of_sections,
|
||||
"section table");
|
||||
|
||||
if (x->x_headers_len <= off + sizeof(*psh) * number_of_sections)
|
||||
if (x->x_headers_len < off + sizeof(*psh) * number_of_sections)
|
||||
errx(1, "section table outside of headers");
|
||||
|
||||
psh = (const struct pe_section_header *)(x->x_buf + off);
|
||||
|
Loading…
Reference in New Issue
Block a user