WIN32 */
| 712 | |
| 713 | #endif /* WIN32 */ |
| 714 | bool 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 | |
| 742 | bool Process::flushCache(const void* target, size_t count) |
| 743 | { |
no outgoing calls
no test coverage detected