diff options
Diffstat (limited to 'ldelf/ta_elf.c')
-rw-r--r-- | ldelf/ta_elf.c | 5 |
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"); |