summaryrefslogtreecommitdiffstats
path: root/common/elf.c
diff options
context:
space:
mode:
authorClement Leger <cleger@kalray.eu>2020-06-12 09:10:32 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2020-06-15 16:15:00 +0200
commit860fbba93e53666ca46dd92dedfda43c9c426931 (patch)
tree273e7ffbc8946c4a6a3d6e6138df730b2ccdebdb /common/elf.c
parentb2e407ad3e316588dabd016ab71441fa4ad8b816 (diff)
downloadbarebox-860fbba93e53666ca46dd92dedfda43c9c426931.tar.gz
barebox-860fbba93e53666ca46dd92dedfda43c9c426931.tar.xz
common: elf: check number of elf program headers
An elf file without program headers should not be loaded. Add a check for such cases. Signed-off-by: Clement Leger <cleger@kalray.eu> Tested-by: Oleksij Rempel <o.rempel@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common/elf.c')
-rw-r--r--common/elf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/common/elf.c b/common/elf.c
index 0e92661e1a..bd97858c89 100644
--- a/common/elf.c
+++ b/common/elf.c
@@ -119,6 +119,11 @@ static int elf_check_image(struct elf_image *elf)
return -ENOEXEC;
}
+ if (!elf_hdr_e_phnum(elf, elf->buf)) {
+ pr_err("No phdr found.\n");
+ return -ENOEXEC;
+ }
+
return 0;
}