Commit graph

91 commits

Author SHA1 Message Date
Peter Elliott
71728f3ea6 LibCore: Add Core::System wrapper for getsid() 2022-10-03 11:11:29 +02:00
Lucas CHOLLET
08dcc40aa5 LibCore: Allow the setgroups wrapper to be used on Lagom
i.e. move Core::System::setgroups() outside the `__serenity__` define.
The base function is already used by LibCore::Account.
2022-09-27 21:29:44 +01:00
Tim Schumacher
5f99934dce Userland: Consolidate most PATH resolving into a single implementation
We previously had at least three different implementations for resolving
executables in the PATH, all of which had slightly different
characteristics.

Merge those into a single implementation to keep the behaviour
consistent, and maybe to make that implementation more configurable in
the future.
2022-08-23 19:00:04 +01:00
Tim Schumacher
c44b9acac3 LibCore: Add System::link() 2022-07-25 22:21:01 +01:00
Itamar
91a03bc6ae LibCore: Add function for searching a file in $PATH
This extracts the logic of searching for a file in $PATH from
System::exec to a separate function.
2022-07-21 16:40:11 +02:00
Andrew Kaster
d84fc60f96 LibCore: Add support for compiling for Android with API Version >= 30
Most changes are around user and group management, which are exposed in
the Android NDK differently than other Unices.

We require version 30 for memfd_create, version 28 for posix_spawn, and
so on. It's possible a shim for memfd_create could be used, but since
Google is mandating new apps use API level 30 as of Nov 2022, this seems
suitable.
2022-07-19 10:44:02 +01:00
sin-ack
828060e631 LibCore: Add convenience templates for System::{unveil,pledge}
These convenience templates allow the following to be written as before:

    TRY(Core::System::pledge("promises..."));
    TRY(Core::System::pledge("promises...", "execpromises..."));
    TRY(Core::System::unveil("path", "permissions"));
    TRY(Core::System::unveil(nullptr, nullptr));

Other uses must now append sv to any literal string passed to pledge and
unveil.
2022-07-12 23:11:35 +02:00
Andrew Kaster
30b626414d LibCore: Stub out pledge and unveil for non-serenity systems 2022-07-06 14:24:23 +02:00
Kenneth Myhra
fbe22af86e Everywhere: Use my fairly new and shiny serenityos.org email :^) 2022-06-30 15:59:42 +01:00
Lucas CHOLLET
d288c700c7 LibCore: Add a wrapper for endgrent() 2022-06-09 22:08:04 +02:00
MacDue
0295d79339 LibCore: Add posix_spawn() wrapper to Core::System 2022-05-25 23:14:22 +01:00
Sam Atkins
32ab09a930 LibCore: Add a wrapper for execvpe() and friends
This is a single function, which behaves like the various LibC exec()
functions depending on the passed parameters. No direct equivalent is
made for execl() - you have to wrap your arguments in a Span of some
kind.

On Serenity, this calls the syscall directly, whereas Lagom forwards to
the appropriate LibC function.
2022-04-11 21:09:42 +02:00
kleines Filmröllchen
ceba27c3fe LibCore: Add openat() syscall wrapper and improve open's implementation
We don't need va_args in open(), we can just use a default parameter.
2022-04-11 00:08:48 +02:00
Kenneth Myhra
0015040ebd LibCore: Add syscall wrapper for access() 2022-03-29 21:28:29 -07:00
Brian Gianforcaro
6eebd69b70 LibCore: Add Core::System::drop_privileges()
In a few places we intentionally drop privileges to reduce the potential
security surface area of networked program, with the pattern of:

```
if (setgid(getgid()) || setuid(getuid()) {
    return 1;
}
```

We can make this a bit nicer to use by creating a wrapper.
2022-03-22 11:39:20 +01:00
Lucas CHOLLET
5d29f64c99 LibCore: Add wrapper for posix_openpt(), grantpt() and unlockpt() 2022-03-02 18:08:05 +01:00
Lucas CHOLLET
ddf9987c39 LibCore+LibC: Add wrapper for setenv
I also added a common interface with StringView compatible parameters:

int serenity_setenv(const char*, ssize_t, const char*, ssize_t, int)

This function is called by both C and C++ API for setenv().
2022-03-02 18:08:05 +01:00
Lucas CHOLLET
b1af1b399e LibCore: Add tcsetpgrp(int, pid_t) wrapper 2022-03-02 18:08:05 +01:00
Lucas CHOLLET
19d5974e3a LibCore: Add killpg() wrapper 2022-03-02 18:08:05 +01:00
Lenny Maiorani
b455363ce7 LibCore: Add rmdir system call wrapper 2022-02-28 13:57:26 +01:00
Isak Holmstrom
4f716caa33 LibCore: Add FreeBSD as OpenBSD/Apple in System.cpp & System.h 2022-02-17 09:26:56 +00:00
sin-ack
37658e6fa6 LibCore: Implement System::fchown 2022-02-14 11:44:09 +01:00
rvictorr
73303f0dc1 LibCore: Add syscall wrapper for profiling_free_buffer() 2022-02-13 12:40:36 +01:00
rvictorr
014c0d68c0 LibCore: Add syscall wrapper for profiling_disable() 2022-02-13 12:40:36 +01:00
rvictorr
c6a743f22c LibCore: Add syscall wrapper for profiling_enable() 2022-02-13 12:40:36 +01:00
kleines Filmröllchen
cf1f58d51c LibCore/System: Add anon_create syscall wrapper
This wrapper is particularly helpful as we use a combination of similar
syscalls on Linux to simulate the behavior of the Serenity-exclusive
anon_create syscall. Users therefore won't have to worry about the
platform anymore :^)
2022-02-10 21:35:17 +01:00
Kenneth Myhra
c10abd6be2 LibCore: Add mkfifo() syscall wrapper 2022-01-24 14:01:58 +03:30
Kenneth Myhra
9fe1ebebdc LibCore: Add mknod() syscall wrapper 2022-01-24 14:01:58 +03:30
Federico Guerinoni
2291ef6c3c LibCore: Add syscall wrapper for umount() 2022-01-22 13:31:52 +02:00
Maciej
ccb8374434 LibCore: Add Core::System wrapper for disown() 2022-01-21 13:44:36 +01:00
mjz19910
a9fb34ca6f LibCore: Add ErrorOr wrapper for adjtime 2022-01-21 01:52:22 +01:00
sin-ack
301f4c469f LibCore: Implement Core::System::lseek 2022-01-20 10:40:51 +01:00
Lucas CHOLLET
b3b40ae1fa LibCore: Add wrapper for sethostname 2022-01-14 19:42:19 +02:00
Junior Rantila
0d328f3c86 LibCore+flock: Make Core::System::waitpid more ergonomic 2022-01-11 16:04:29 +01:00
Junior Rantila
7801e38af1 LibCore: Add beep wrapper 2022-01-09 11:16:00 +03:30
Lucas CHOLLET
3fa5be655d LibCore: Add a wrapper for setsid() 2022-01-09 03:22:10 +03:30
Junior Rantila
9a38d1de07 LibCore+ImageViewer: Add unlink() wrapper, use it 2022-01-06 18:20:07 +01:00
mjz19910
eacbbca4c4 LibCore: Impliment ErrorOr wrapper for chdir 2022-01-04 10:59:42 +00:00
mjz19910
91f5fc796b LibCore: Add an ErrorOr wrapper for uname 2022-01-04 07:33:23 +00:00
Andreas Kling
431bd069f0 LibCore: Add Core::System wrappers for getspent() and getspnam() 2022-01-02 18:08:02 +01:00
Andreas Kling
7008f74214 LibCore: Add syscall wrappers for getpwuid() and getgrgid() 2022-01-02 18:08:02 +01:00
Andreas Kling
1e4117f1e1 LibCore: Add syscall wrapper for getgroups()
This wrapper does all the grunt work of figuring out how many extra GIDs
there are, and then returning them nicely wrapped in a Vector<gid_t>.
2022-01-02 18:08:02 +01:00
circl
63760603f3 Kernel+LibC+LibCore: Add lchown and fchownat functions
This modifies sys$chown to allow specifying whether or not to follow
symlinks and in which directory.

This was then used to implement lchown and fchownat in LibC and LibCore.
2022-01-01 15:08:49 +01:00
Ali Mohammad Pur
8de8a7766d LibCore: Add Core::System::setpgid() 2021-12-31 02:19:45 +03:30
Ali Mohammad Pur
ee46cee31f LibCore: Make Core::System::pipe2() available on Lagom
Note that this drops the flags on the floor if not on linux or serenity.
2021-12-31 02:19:45 +03:30
tuftedocelot
ea0a002468 LibCore: Add OpenBSD headers to System and LocalSocket
Add the correct header to System.h and add OpenBSD-specific handling of
signals and socket process id
2021-12-29 03:46:56 -08:00
Kenneth Myhra
7772309169 LibCore+chown: Return ErrorOr<Optional<...>> for getgrnam and getpwnam
This patch returns an empty Optional<...> instead of an Error for
Core::System::getgrname and Core::System::getpwnam if we can't find a
matching group or user entry.

It also updates the 'chown' utility to support this new behavior.
2021-12-28 23:23:54 +01:00
Sam Atkins
289cf8d7ef LibCore: Add ErrorOr wrappers to socket syscalls
These are all pretty simple so I thought I would add them all in one go:

- socket()
- bind()
- listen()
- accept()
- accept4()
- connect()
- shutdown()
- send()
- sendmsg()
- sendto()
- recv()
- recvmsg()
- recvfrom()
- getsockopt()
- setsockopt()
- getsockname()
- getpeername()
- socketpair()
2021-12-27 22:00:01 +01:00
Andreas Kling
2bd1a62ce1 LibCore: Add syscall wrapper for ptrace() 2021-12-25 11:05:30 +01:00
Brian Gianforcaro
a62669ebcf LibCore: Add Core::System::getcwd() wrapper 2021-12-24 14:29:52 -08:00