From c1dc6fd745da12d43a2eb285fd87f3a9001b94a9 Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 26 Jun 2023 22:18:49 -0300 Subject: [PATCH] elf: fix rounding issue --- kernel-src/sys/elf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel-src/sys/elf.c b/kernel-src/sys/elf.c index 44f1ecf4..dc1be1f6 100644 --- a/kernel-src/sys/elf.c +++ b/kernel-src/sys/elf.c @@ -84,6 +84,10 @@ static int load(vnode_t *vnode, elfph64_t *ph) { // zero remaining parts of the first page if needed if (remaining && msize) { size_t remainingmsize = remaining > msize ? msize : remaining; + size_t pagediff = ROUND_UP(mempos, PAGE_SIZE) - mempos; + if (remainingmsize > ROUND_UP(mempos, PAGE_SIZE) - mempos) + remainingmsize = pagediff; + memset((void *)mempos, 0, remainingmsize); msize -= remainingmsize; mempos += remainingmsize;