I want to make a chunck of heap memory read-only. For that I have tried with memalign()
with mprotect()
.But from the memalignment what can I get , memalign allocates memory away from the process heap.
I want to make some portion of the heap read-only. Any help on that ?
malloc()->mmap()->mprotect()
a hypothetical thought , but not sure if that can help ... Any sample code to implement above ?
I need to protect the memory address within the heap. with malloc() i get address around 0x10012008 whereas with mmap() it is 0xf7ec9000.My intention is to make a part of heap-meory to be read only to catch any trampler that might try to run through that heap.
You should use
mmap()
directly and dropmalloc()
entirely. And, depending on your needs, you may not needmprotect()
at all:On recent kernels and libc implementations this will allocate the requested amount of memory with the specified protection mode - in this case the allocated memory area can only be read, but not written. If you only need a bunch of zero pages, that would do. Otherwise, the resulting area will be aligned properly and you can use
mprotect()
to unprotect it for short periods of time in a controlled manner...Yes, mmap and mprotect are the right functions. I do not understand what's the problem with your current approch, i.e., what you mean by "For that I have tried with memalign() with mprotect().But from the memalignment what can I get , memalign allocates memory away from the process heap."
Below is an example how to create a write-protected memory area: