Kernel+keymap+KeyboardMapper: New pledge for getkeymap

This commit is contained in:
Ben Wiederhake 2021-01-31 22:50:17 +01:00 committed by Andreas Kling
parent 272df54a3e
commit cbee0c26e1
Notes: sideshowbarker 2024-07-18 22:40:02 +09:00
4 changed files with 11 additions and 5 deletions

View file

@ -82,7 +82,8 @@ extern VirtualAddress g_return_to_ring3_from_signal_trampoline;
__ENUMERATE_PLEDGE_PROMISE(settime) \ __ENUMERATE_PLEDGE_PROMISE(settime) \
__ENUMERATE_PLEDGE_PROMISE(sigaction) \ __ENUMERATE_PLEDGE_PROMISE(sigaction) \
__ENUMERATE_PLEDGE_PROMISE(setkeymap) \ __ENUMERATE_PLEDGE_PROMISE(setkeymap) \
__ENUMERATE_PLEDGE_PROMISE(prot_exec) __ENUMERATE_PLEDGE_PROMISE(prot_exec) \
__ENUMERATE_PLEDGE_PROMISE(getkeymap)
enum class Pledge : u32 { enum class Pledge : u32 {
#define __ENUMERATE_PLEDGE_PROMISE(x) x, #define __ENUMERATE_PLEDGE_PROMISE(x) x,

View file

@ -69,7 +69,7 @@ int Process::sys$setkeymap(Userspace<const Syscall::SC_setkeymap_params*> user_p
int Process::sys$getkeymap(Userspace<const Syscall::SC_getkeymap_params*> user_params) int Process::sys$getkeymap(Userspace<const Syscall::SC_getkeymap_params*> user_params)
{ {
REQUIRE_PROMISE(stdio); REQUIRE_PROMISE(getkeymap);
Syscall::SC_getkeymap_params params; Syscall::SC_getkeymap_params params;
if (!copy_from_user(&params, user_params)) if (!copy_from_user(&params, user_params))

View file

@ -40,14 +40,14 @@ int main(int argc, char** argv)
args_parser.add_positional_argument(path, "Keyboard character mapping file.", "file", Core::ArgsParser::Required::No); args_parser.add_positional_argument(path, "Keyboard character mapping file.", "file", Core::ArgsParser::Required::No);
args_parser.parse(argc, argv); args_parser.parse(argc, argv);
if (pledge("stdio thread rpath accept cpath wpath recvfd sendfd unix fattr", nullptr) < 0) { if (pledge("stdio getkeymap thread rpath accept cpath wpath recvfd sendfd unix fattr", nullptr) < 0) {
perror("pledge"); perror("pledge");
return 1; return 1;
} }
auto app = GUI::Application::construct(argc, argv); auto app = GUI::Application::construct(argc, argv);
if (pledge("stdio thread rpath accept cpath wpath recvfd sendfd", nullptr) < 0) { if (pledge("stdio getkeymap thread rpath accept cpath wpath recvfd sendfd", nullptr) < 0) {
perror("pledge"); perror("pledge");
return 1; return 1;
} }
@ -69,6 +69,11 @@ int main(int argc, char** argv)
keyboard_mapper_widget->load_from_system(); keyboard_mapper_widget->load_from_system();
} }
if (pledge("stdio thread rpath accept cpath wpath recvfd sendfd", nullptr) < 0) {
perror("pledge");
return 1;
}
// Actions // Actions
auto open_action = GUI::CommonActions::make_open_action( auto open_action = GUI::CommonActions::make_open_action(
[&](auto&) { [&](auto&) {

View file

@ -32,7 +32,7 @@
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
if (pledge("stdio setkeymap rpath", nullptr) < 0) { if (pledge("stdio setkeymap getkeymap rpath", nullptr) < 0) {
perror("pledge"); perror("pledge");
return 1; return 1;
} }