Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/taviso/loadlibrary.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTavis Ormandy <taviso@gmail.com>2019-08-21 02:12:43 +0300
committerTavis Ormandy <taviso@gmail.com>2019-08-21 02:12:43 +0300
commitf517d284f0d63f78fe9e79f06734cd6f36c0f95a (patch)
tree31510f9e9618ac4b11e5f24fb811230080ebf049
parent165a9657cbee264bd3ae0de333054211d5639b84 (diff)
I don't think we need MAP_SHARED
-rw-r--r--peloader/pe_linker.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/peloader/pe_linker.c b/peloader/pe_linker.c
index 77567b6..f0e4737 100644
--- a/peloader/pe_linker.c
+++ b/peloader/pe_linker.c
@@ -455,15 +455,21 @@ static int fix_pe_image(struct pe_image *pe)
}
image_size = pe->opt_hdr->SizeOfImage;
- image = mmap((void *)pe->opt_hdr->ImageBase, image_size + getpagesize(), PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_FIXED | MAP_SHARED, -1, 0);
- // Round to page size?
- //image = (PVOID)(ROUND_UP((ULONG)(image), getpagesize()));
+ // TODO: If image does not have DYNAMIC_BASE, add MAP_FIXED.
+
+ image = mmap((PVOID)(pe->opt_hdr->ImageBase),
+ image_size + getpagesize(),
+ PROT_READ | PROT_WRITE | PROT_EXEC,
+ MAP_ANONYMOUS | MAP_PRIVATE,
+ -1,
+ 0);
if (image == MAP_FAILED) {
ERROR("failed to mmap desired space for image: %d bytes, image base %p, %m", image_size, pe->opt_hdr->ImageBase);
return -ENOMEM;
}
+
memset(image, 0, image_size);
/* Copy all the headers, ie everything before the first section. */