MCPcopy Create free account
hub / github.com/DFHack/dfhack / setPermissions

Method setPermissions

library/Process.cpp:714–740  ·  view source on GitHub ↗

WIN32 */

Source from the content-addressed store, hash-verified

712
713#endif /* WIN32 */
714bool Process::setPermissions(const t_memrange & range,const t_memrange &trgrange)
715{
716#ifndef WIN32
717 int result;
718 int protect=0;
719 if(trgrange.read)protect|=PROT_READ;
720 if(trgrange.write)protect|=PROT_WRITE;
721 if(trgrange.execute)protect|=PROT_EXEC;
722 result=mprotect((void *)range.start, (size_t)range.end-(size_t)range.start,protect);
723#else /* WIN32 */
724 DWORD newprotect=0;
725 if(trgrange.read && !trgrange.write && !trgrange.execute)newprotect=PAGE_READONLY;
726 if(trgrange.read && trgrange.write && !trgrange.execute)newprotect=PAGE_READWRITE;
727 if(!trgrange.read && !trgrange.write && trgrange.execute)newprotect=PAGE_EXECUTE;
728 if(trgrange.read && !trgrange.write && trgrange.execute)newprotect=PAGE_EXECUTE_READ;
729 if(trgrange.read && trgrange.write && trgrange.execute)newprotect=PAGE_EXECUTE_READWRITE;
730 DWORD oldprotect=0;
731 bool result;
732 result=VirtualProtect((LPVOID)range.start,(char *)range.end-(char *)range.start,newprotect,&oldprotect);
733#endif /* WIN32 */
734
735#ifndef WIN32
736 return result==0;
737#else /* WIN32 */
738 return result;
739#endif /* WIN32 */
740}
741
742bool Process::flushCache(const void* target, size_t count)
743{

Callers 2

verifyAccessMethod · 0.80
closeMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected