summaryrefslogtreecommitdiff
path: root/library/Process-linux.cpp
diff options
context:
space:
mode:
authorWarmist2011-07-28 01:00:12 +0300
committerWarmist2011-07-28 01:00:12 +0300
commitbc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8 (patch)
tree28a7b7e81c56a4890235a6ecbdc88ce64a224975 /library/Process-linux.cpp
parenta01004efd6a7962c52a88cfc662924e884ee7097 (diff)
downloaddfhack-bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8.tar.gz
dfhack-bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8.tar.bz2
dfhack-bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8.tar.xz
Made Process::setPermisions functions, to set memory page's permisions
Diffstat (limited to 'library/Process-linux.cpp')
-rw-r--r--library/Process-linux.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/library/Process-linux.cpp b/library/Process-linux.cpp
index 23d8baf1..937bd155 100644
--- a/library/Process-linux.cpp
+++ b/library/Process-linux.cpp
@@ -25,6 +25,7 @@ distribution.
#include "Internal.h"
#include <dirent.h>
#include <errno.h>
+#include <sys/mman.h>
#include <string>
#include <vector>
@@ -176,4 +177,16 @@ string Process::getPath()
int Process::getPID()
{
return getpid();
+}
+
+bool Process::setPermisions(const t_memrange & range,const t_memrange &trgrange)
+{
+ int result;
+ int protect=0;
+ if(trgrange.read)protect|=PROT_READ;
+ if(trgrange.write)protect|=PROT_WRITE;
+ if(trgrange.execute)protect|=PROT_EXECUTE;
+ result=mprotect((void *)range.start, range.end-range.start,protect);
+
+ return result==0;
} \ No newline at end of file