From 7300b9ecd6c52fc21eabaf71b5e812b4b4469ad9 Mon Sep 17 00:00:00 2001 From: ngiddings Date: Mon, 19 Apr 2021 06:56:03 -0500 Subject: [PATCH] Fixed broken ELF loader Only binaries less than a page long would load correctly. --- src/elf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/elf.c b/src/elf.c index 586fb21..c03d7c6 100644 --- a/src/elf.c +++ b/src/elf.c @@ -22,7 +22,7 @@ int load_program(struct elf_file_header_t *elf, struct page_stack_t *page_stack) { return S_OUT_OF_MEMORY; } - int status = map_page(page_stack, d, page, PAGE_RW | PAGE_USERMODE | PAGE_EXECUTABLE); + int status = map_page(page_stack, d + n, page, PAGE_RW | PAGE_USERMODE | PAGE_EXECUTABLE); switch(status) { case S_OUT_OF_MEMORY: @@ -30,7 +30,7 @@ int load_program(struct elf_file_header_t *elf, struct page_stack_t *page_stack) case S_OUT_OF_BOUNDS: return status; case S_OK: - memcpy(d, s, page_size); + memcpy(d + n, s + n, n + page_size < program_header->memsize ? page_size : program_header->memsize - n); } } }