From f78a2833b62410a952a366a74c67d58ad7729282 Mon Sep 17 00:00:00 2001 From: Hubert Badocha Date: Tue, 10 Sep 2024 21:54:32 +0200 Subject: [PATCH] proc: do not check sizes in not loadable sections JIRA: RTOS-912 --- proc/process.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/proc/process.c b/proc/process.c index 7300a6f4..19314efa 100644 --- a/proc/process.c +++ b/proc/process.c @@ -359,9 +359,11 @@ static int process_validateElf32(void *iehdr, size_t size) return -ENOEXEC; } for (i = 0; i < ehdr->e_phnum; i++) { - if ((phdr->p_type != PT_LOAD) && - (process_isPtrValid(iehdr, size, ((char *)ehdr) + phdr[i].p_offset, phdr[i].p_filesz) == 0)) { - return -ENOEXEC; + if (phdr->p_type != PT_LOAD) { + if (process_isPtrValid(iehdr, size, ((char *)ehdr) + phdr[i].p_offset, phdr[i].p_filesz) == 0) { + return -ENOEXEC; + } + continue; } offs = phdr->p_offset & ~(phdr->p_align - 1); @@ -432,9 +434,11 @@ static int process_validateElf64(void *iehdr, size_t size) return -ENOEXEC; } for (i = 0; i < ehdr->e_phnum; i++) { - if ((phdr->p_type != PT_LOAD) && - (process_isPtrValid(iehdr, size, ((char *)ehdr) + phdr[i].p_offset, phdr[i].p_filesz) == 0)) { - return -ENOEXEC; + if (phdr->p_type != PT_LOAD) { + if (process_isPtrValid(iehdr, size, ((char *)ehdr) + phdr[i].p_offset, phdr[i].p_filesz) == 0) { + return -ENOEXEC; + } + continue; } offs = phdr->p_offset & ~(phdr->p_align - 1);