1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 22:14:58 +00:00

FileSystem: Route chown() and fchown() through VFS for access control.

This commit is contained in:
Andreas Kling 2019-06-02 12:30:24 +02:00
parent aa35c08633
commit e67bfdb7f6
3 changed files with 13 additions and 8 deletions

View file

@ -402,14 +402,8 @@ KResult VFS::rename(StringView old_path, StringView new_path, Custody& base)
return KSuccess;
}
KResult VFS::chown(StringView path, uid_t a_uid, gid_t a_gid, Custody& base)
KResult VFS::chown(Inode& inode, uid_t a_uid, gid_t a_gid)
{
auto custody_or_error = resolve_path(path, base);
if (custody_or_error.is_error())
return custody_or_error.error();
auto& custody = *custody_or_error.value();
auto& inode = custody.inode();
if (inode.fs().is_readonly())
return KResult(-EROFS);
@ -436,6 +430,16 @@ KResult VFS::chown(StringView path, uid_t a_uid, gid_t a_gid, Custody& base)
return inode.chown(new_uid, new_gid);
}
KResult VFS::chown(StringView path, uid_t a_uid, gid_t a_gid, Custody& base)
{
auto custody_or_error = resolve_path(path, base);
if (custody_or_error.is_error())
return custody_or_error.error();
auto& custody = *custody_or_error.value();
auto& inode = custody.inode();
return chown(inode, a_uid, a_gid);
}
KResult VFS::link(StringView old_path, StringView new_path, Custody& base)
{
auto old_custody_or_error = resolve_path(old_path, base);