Browse Source

Kernel: Allow to remove files from sticky directory if user owns it

It's what the Linux chmod(1) manpage says (in the 'Restricted Deletion
Flag or Sticky Bit' section), and it just makes sense to me. :^)
Karol Kosek 2 years ago
parent
commit
8cfd445c23
1 changed files with 2 additions and 2 deletions
  1. 2 2
      Kernel/FileSystem/VirtualFileSystem.cpp

+ 2 - 2
Kernel/FileSystem/VirtualFileSystem.cpp

@@ -645,7 +645,7 @@ ErrorOr<void> VirtualFileSystem::rename(Credentials const& credentials, Custody&
         return EACCES;
         return EACCES;
 
 
     if (old_parent_inode.metadata().is_sticky()) {
     if (old_parent_inode.metadata().is_sticky()) {
-        if (!credentials.is_superuser() && old_inode.metadata().uid != credentials.euid())
+        if (!credentials.is_superuser() && old_parent_inode.metadata().uid != credentials.euid() && old_inode.metadata().uid != credentials.euid())
             return EACCES;
             return EACCES;
     }
     }
 
 
@@ -807,7 +807,7 @@ ErrorOr<void> VirtualFileSystem::unlink(Credentials const& credentials, StringVi
         return EACCES;
         return EACCES;
 
 
     if (parent_inode.metadata().is_sticky()) {
     if (parent_inode.metadata().is_sticky()) {
-        if (!credentials.is_superuser() && inode.metadata().uid != credentials.euid())
+        if (!credentials.is_superuser() && parent_inode.metadata().uid != credentials.euid() && inode.metadata().uid != credentials.euid())
             return EACCES;
             return EACCES;
     }
     }