diff options
Diffstat (limited to 'Userland/Libraries/LibSystem/Wrappers.cpp')
-rw-r--r-- | Userland/Libraries/LibSystem/Wrappers.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Userland/Libraries/LibSystem/Wrappers.cpp b/Userland/Libraries/LibSystem/Wrappers.cpp new file mode 100644 index 0000000000..7045d7c786 --- /dev/null +++ b/Userland/Libraries/LibSystem/Wrappers.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include <LibSystem/Wrappers.h> +#include <LibSystem/syscall.h> + +namespace System { + +ErrorOr<void> pledge(StringView promises, StringView execpromises) +{ + Syscall::SC_pledge_params params { + { promises.characters_without_null_termination(), promises.length() }, + { execpromises.characters_without_null_termination(), execpromises.length() }, + }; + int rc = syscall(SC_pledge, ¶ms); + if (rc < 0) + return Error::from_errno(-rc); + return {}; +} + +ErrorOr<void> unveil(StringView path, StringView permissions) +{ + Syscall::SC_unveil_params params { + { path.characters_without_null_termination(), path.length() }, + { permissions.characters_without_null_termination(), permissions.length() }, + }; + int rc = syscall(SC_unveil, ¶ms); + if (rc < 0) + return Error::from_errno(-rc); + return {}; +} + +} |