aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric van Gyzen <vangyzen@FreeBSD.org>2022-02-17 15:53:48 +0000
committerEric van Gyzen <vangyzen@FreeBSD.org>2022-02-17 16:09:53 +0000
commit86e5e10daf54da7df358a06033f3a3bd8c852a08 (patch)
tree5292f483a0aae42c7ab5eb2f3a5c53d538ae89ea
parent95edb10b47fc1a919cd1687aaf16be9e14456c89 (diff)
downloadsrc-86e5e10daf54da7df358a06033f3a3bd8c852a08.tar.gz
src-86e5e10daf54da7df358a06033f3a3bd8c852a08.zip
-rw-r--r--usr.bin/elfdump/elfdump.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/usr.bin/elfdump/elfdump.c b/usr.bin/elfdump/elfdump.c
index 2bdf98830088..28b42a55a508 100644
--- a/usr.bin/elfdump/elfdump.c
+++ b/usr.bin/elfdump/elfdump.c
@@ -585,6 +585,11 @@ main(int ac, char **av)
if ((fd = open(*av, O_RDONLY)) < 0 ||
fstat(fd, &sb) < 0)
err(1, "%s", *av);
+ if ((size_t)sb.st_size < sizeof(Elf32_Ehdr)) {
+ if (flags & ED_IS_ELF)
+ exit(1);
+ errx(1, "not an elf file");
+ }
cap_rights_init(&rights, CAP_MMAP_R);
if (caph_rights_limit(fd, &rights) < 0)
err(1, "unable to limit rights for %s", *av);
@@ -598,7 +603,7 @@ main(int ac, char **av)
e = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (e == MAP_FAILED)
err(1, NULL);
- if (!IS_ELF(*(Elf32_Ehdr *)e)) {
+ if (!IS_ELF(*e)) {
if (flags & ED_IS_ELF)
exit(1);
errx(1, "not an elf file");