Browse Source

Kernel: Let's also not consider kernel regions to be valid user stacks

This one is less obviously exploitable than the previous one, but still
a bug nonetheless.
Andreas Kling 5 years ago
parent
commit
66d5ebafa6
1 changed files with 2 additions and 2 deletions
  1. 2 2
      Kernel/VM/MemoryManager.cpp

+ 2 - 2
Kernel/VM/MemoryManager.cpp

@@ -586,8 +586,8 @@ void MemoryManager::unquickmap_page()
 
 
 bool MemoryManager::validate_user_stack(const Process& process, VirtualAddress vaddr) const
 bool MemoryManager::validate_user_stack(const Process& process, VirtualAddress vaddr) const
 {
 {
-    auto* region = region_from_vaddr(process, vaddr);
-    return region && region->is_stack();
+    auto* region = user_region_from_vaddr(const_cast<Process&>(process), vaddr);
+    return region && region->is_user_accessible() && region->is_stack();
 }
 }
 
 
 bool MemoryManager::validate_user_read(const Process& process, VirtualAddress vaddr) const
 bool MemoryManager::validate_user_read(const Process& process, VirtualAddress vaddr) const