aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/uefisign
diff options
context:
space:
mode:
authorKenneth Camann <kjcamann@gmail.com>2021-01-03 02:11:42 +0000
committerWarner Losh <imp@FreeBSD.org>2021-06-03 21:22:14 +0000
commit5deb35002545ca5081cc90795fec68bcea30f75d (patch)
treeea4fa69f109c05470747698361388ee18c0f5a7b /usr.sbin/uefisign
parent37f780d3e0a2e8e4c64c526b6e7dc77ff6b91057 (diff)
downloadsrc-5deb35002545ca5081cc90795fec68bcea30f75d.tar.gz
src-5deb35002545ca5081cc90795fec68bcea30f75d.zip
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
Diffstat (limited to 'usr.sbin/uefisign')
-rw-r--r--usr.sbin/uefisign/pe.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/usr.sbin/uefisign/pe.c b/usr.sbin/uefisign/pe.c
index 6459321441d8..09b5edd56ab7 100644
--- a/usr.sbin/uefisign/pe.c
+++ b/usr.sbin/uefisign/pe.c
@@ -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);