mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-02 17:28:48 +00:00
Kernel: Dump backtrace when denying a path because of a veil
This will make it much easier to see why a process wants to open the file.
This commit is contained in:
parent
a27c5d2fb7
commit
3ffdff5c02
Notes:
sideshowbarker
2024-07-19 09:45:09 +09:00
Author: https://github.com/bugaevc
Commit: 3ffdff5c02
Pull-request: https://github.com/SerenityOS/serenity/pull/1151
1 changed files with 6 additions and 0 deletions
|
@ -729,18 +729,21 @@ KResult VFS::validate_path_against_process_veil(StringView path, int options)
|
|||
auto* unveiled_path = find_matching_unveiled_path(path);
|
||||
if (!unveiled_path) {
|
||||
dbg() << "Rejecting path '" << path << "' since it hasn't been unveiled.";
|
||||
dump_backtrace();
|
||||
return KResult(-ENOENT);
|
||||
}
|
||||
|
||||
if (options & O_CREAT) {
|
||||
if (!(unveiled_path->permissions & UnveiledPath::Access::CreateOrRemove)) {
|
||||
dbg() << "Rejecting path '" << path << "' since it hasn't been unveiled with 'c' permission.";
|
||||
dump_backtrace();
|
||||
return KResult(-EACCES);
|
||||
}
|
||||
}
|
||||
if (options & O_UNLINK_INTERNAL) {
|
||||
if (!(unveiled_path->permissions & UnveiledPath::Access::CreateOrRemove)) {
|
||||
dbg() << "Rejecting path '" << path << "' for unlink since it hasn't been unveiled with 'c' permission.";
|
||||
dump_backtrace();
|
||||
return KResult(-EACCES);
|
||||
}
|
||||
return KSuccess;
|
||||
|
@ -748,18 +751,21 @@ KResult VFS::validate_path_against_process_veil(StringView path, int options)
|
|||
if (options & O_RDONLY) {
|
||||
if (!(unveiled_path->permissions & UnveiledPath::Access::Read)) {
|
||||
dbg() << "Rejecting path '" << path << "' since it hasn't been unveiled with 'r' permission.";
|
||||
dump_backtrace();
|
||||
return KResult(-EACCES);
|
||||
}
|
||||
}
|
||||
if (options & O_WRONLY) {
|
||||
if (!(unveiled_path->permissions & UnveiledPath::Access::Write)) {
|
||||
dbg() << "Rejecting path '" << path << "' since it hasn't been unveiled with 'w' permission.";
|
||||
dump_backtrace();
|
||||
return KResult(-EACCES);
|
||||
}
|
||||
}
|
||||
if (options & O_EXEC) {
|
||||
if (!(unveiled_path->permissions & UnveiledPath::Access::Execute)) {
|
||||
dbg() << "Rejecting path '" << path << "' since it hasn't been unveiled with 'x' permission.";
|
||||
dump_backtrace();
|
||||
return KResult(-EACCES);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue