summaryrefslogtreecommitdiff
path: root/ldelf/ta_elf.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldelf/ta_elf.c')
-rw-r--r--ldelf/ta_elf.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ldelf/ta_elf.c b/ldelf/ta_elf.c
index 93208809..d42bf07d 100644
--- a/ldelf/ta_elf.c
+++ b/ldelf/ta_elf.c
@@ -815,9 +815,12 @@ static void add_dependencies(struct ta_elf *elf)
static void copy_section_headers(struct ta_elf *elf)
{
TEE_Result res = TEE_SUCCESS;
- size_t sz = elf->e_shnum * elf->e_shentsize;
+ size_t sz = 0;
size_t offs = 0;
+ if (MUL_OVERFLOW(elf->e_shnum, elf->e_shentsize, &sz))
+ err(TEE_ERROR_BAD_FORMAT, "Shdr size overflow");
+
elf->shdr = malloc(sz);
if (!elf->shdr)
err(TEE_ERROR_OUT_OF_MEMORY, "malloc");