From 0ad660a168b87946b2bfed03603790119f53dc39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 2 Nov 2006 20:38:30 +0000 Subject: [PATCH] Remap all preloaded executables read-only and executable. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19180 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/elf.cpp | 4 ++++ src/system/kernel/vm/vm.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/system/kernel/elf.cpp b/src/system/kernel/elf.cpp index 9edc177f14..2b7fa61678 100644 --- a/src/system/kernel/elf.cpp +++ b/src/system/kernel/elf.cpp @@ -820,6 +820,10 @@ insert_preloaded_image(struct preloaded_image *preloadedImage, bool kernel) preloadedImage->id = image->id; // modules_init() uses this information to get the preloaded images + // we now no longer need to write to the text area anymore + set_area_protection(image->text_region.id, + B_KERNEL_READ_AREA | B_KERNEL_EXECUTE_AREA); + return B_OK; error1: diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp index a21c96aa8d..8729d7c193 100644 --- a/src/system/kernel/vm/vm.cpp +++ b/src/system/kernel/vm/vm.cpp @@ -2167,6 +2167,8 @@ create_preloaded_image_areas(struct preloaded_image *image) image->text_region.id = create_area(name, &address, B_EXACT_ADDRESS, PAGE_ALIGN(image->text_region.size), B_ALREADY_WIRED, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA); + // this will later be remapped read-only/executable by the + // ELF initialization code strcpy(name + length, "_data"); address = (void *)ROUNDOWN(image->data_region.start, B_PAGE_SIZE);