[VFS] Fixed opening files with incompatible access flags on posix

This commit is contained in:
Adrian
2026-06-22 15:20:39 +01:00
committed by Radosław Gliński
parent 0b4e6c440e
commit 1e7c1f6773
2 changed files with 13 additions and 5 deletions

View File

@@ -191,10 +191,7 @@ std::unique_ptr<FileHandle> FileHandle::OpenExisting(
open_access |= O_WRONLY;
}
if (desired_access & FileAccess::kGenericExecute) {
open_access |= O_RDONLY;
}
if (desired_access & FileAccess::kGenericAll) {
open_access |= O_RDWR;
// Unsupported
}
if (desired_access & FileAccess::kFileReadData) {
open_access |= O_RDONLY;
@@ -202,6 +199,17 @@ std::unique_ptr<FileHandle> FileHandle::OpenExisting(
if (desired_access & FileAccess::kFileWriteData) {
open_access |= O_WRONLY;
}
if (desired_access & FileAccess::kGenericRead &&
desired_access & FileAccess::kGenericWrite) {
open_access = O_RDWR;
}
if (desired_access & FileAccess::kFileReadData &&
desired_access & FileAccess::kFileWriteData) {
open_access = O_RDWR;
}
if (desired_access & FileAccess::kGenericAll) {
open_access = O_RDWR;
}
if (desired_access & FileAccess::kFileAppendData) {
open_access |= O_APPEND;
}

View File

@@ -104,7 +104,7 @@ void UserProfile::WriteProfileIcon(XTileType tile_type,
const X_STATUS result = kernel_state()->file_system()->OpenFile(
nullptr, path, vfs::FileDisposition::kOverwriteIf,
vfs::FileAccess::kGenericAll, false, true, &file, &action);
vfs::FileAccess::kGenericWrite, false, true, &file, &action);
if (result != X_STATUS_SUCCESS) {
return;