Browse Source

Kernel: Disallow mmap names longer than PATH_MAX

Andreas Kling 5 years ago
parent
commit
b65572b3fe
1 changed files with 5 additions and 0 deletions
  1. 5 0
      Kernel/Process.cpp

+ 5 - 0
Kernel/Process.cpp

@@ -245,6 +245,9 @@ int Process::sys$set_mmap_name(const Syscall::SC_set_mmap_name_params* user_para
     if (!validate_read_and_copy_typed(&params, user_params))
     if (!validate_read_and_copy_typed(&params, user_params))
         return -EFAULT;
         return -EFAULT;
 
 
+    if (params.name.length > PATH_MAX)
+        return -ENAMETOOLONG;
+
     auto name = validate_and_copy_string_from_user(params.name);
     auto name = validate_and_copy_string_from_user(params.name);
     if (name.is_null())
     if (name.is_null())
         return -EFAULT;
         return -EFAULT;
@@ -323,6 +326,8 @@ void* Process::sys$mmap(const Syscall::SC_mmap_params* user_params)
 
 
     String name;
     String name;
     if (params.name.characters) {
     if (params.name.characters) {
+        if (params.name.length > PATH_MAX)
+            return (void*)-ENAMETOOLONG;
         name = validate_and_copy_string_from_user(params.name);
         name = validate_and_copy_string_from_user(params.name);
         if (name.is_null())
         if (name.is_null())
             return (void*)-EFAULT;
             return (void*)-EFAULT;