From 832478ad0c1615fa3713e7839f7648df0b44fbee Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Tue, 21 Mar 2023 22:46:03 -0400 Subject: [PATCH] LibFileSystemAccessClient: Don't make illegal operation on files `handle_prompt_end` is calling `is_device` and `is_directory` on the path chosen by the user. However, this path is not necessarily unveiled. Meaning that it the both functions results in an illegal operation. This is a regression introduced with the usage of LibFileSystem in 1d24f394. This patch, revert the behavior at its previous state, i.e. calling both functions with the fd provided by the FSAS. --- Userland/Libraries/LibFileSystemAccessClient/Client.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibFileSystemAccessClient/Client.cpp b/Userland/Libraries/LibFileSystemAccessClient/Client.cpp index ea4af7a457..cd362c60f5 100644 --- a/Userland/Libraries/LibFileSystemAccessClient/Client.cpp +++ b/Userland/Libraries/LibFileSystemAccessClient/Client.cpp @@ -129,13 +129,13 @@ void Client::handle_prompt_end(i32 request_id, i32 error, Optional co return; } - if (FileSystem::is_device(*chosen_file)) { + if (FileSystem::is_device(ipc_file->fd())) { GUI::MessageBox::show_error(request_data.parent_window, DeprecatedString::formatted("Opening \"{}\" failed: Cannot open device files", *chosen_file)); request_data.promise->resolve(Error::from_string_literal("Cannot open device files")).release_value_but_fixme_should_propagate_errors(); return; } - if (FileSystem::is_directory(*chosen_file)) { + if (FileSystem::is_directory(ipc_file->fd())) { GUI::MessageBox::show_error(request_data.parent_window, DeprecatedString::formatted("Opening \"{}\" failed: Cannot open directory", *chosen_file)); request_data.promise->resolve(Error::from_errno(EISDIR)).release_value_but_fixme_should_propagate_errors(); return;