summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/vm_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-10-20 04:58:57 +0200
committerGitHub <noreply@github.com>2018-10-20 04:58:57 +0200
commit60317e630619ff5942fcb4b16cf1b3a0b2791cc2 (patch)
tree5fb63e418bc7af69c9d06f7fc4ae3980e7d60aee /src/core/hle/kernel/vm_manager.cpp
parentMerge pull request #1517 from bunnei/dma (diff)
parentsvc: Add missing sanitizing checks for MapSharedMemory/UnmapSharedMemory (diff)
downloadyuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.tar
yuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.tar.gz
yuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.tar.bz2
yuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.tar.lz
yuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.tar.xz
yuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.tar.zst
yuzu-60317e630619ff5942fcb4b16cf1b3a0b2791cc2.zip
Diffstat (limited to 'src/core/hle/kernel/vm_manager.cpp')
-rw-r--r--src/core/hle/kernel/vm_manager.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp
index 1e28ccbda..e1a34eef1 100644
--- a/src/core/hle/kernel/vm_manager.cpp
+++ b/src/core/hle/kernel/vm_manager.cpp
@@ -507,6 +507,26 @@ u64 VMManager::GetASLRRegionSize() const {
return aslr_region_end - aslr_region_base;
}
+bool VMManager::IsWithinASLRRegion(VAddr begin, u64 size) const {
+ const VAddr range_end = begin + size;
+ const VAddr aslr_start = GetASLRRegionBaseAddress();
+ const VAddr aslr_end = GetASLRRegionEndAddress();
+
+ if (aslr_start > begin || begin > range_end || range_end - 1 > aslr_end - 1) {
+ return false;
+ }
+
+ if (range_end > heap_region_base && heap_region_end > begin) {
+ return false;
+ }
+
+ if (range_end > map_region_base && map_region_end > begin) {
+ return false;
+ }
+
+ return true;
+}
+
VAddr VMManager::GetCodeRegionBaseAddress() const {
return code_region_base;
}