Mike Yuan
bca0805311
core/service: check error first and log about errno
...
Follow-up for becdfcb9f1
2023-10-19 21:37:39 +08:00
Mike Yuan
f65a40fb0b
cgroup-util: use RET_GATHER more, return first error
2023-10-19 21:37:33 +08:00
Mike Yuan
dbc0342e61
core/exec-invoke: use correct exit status
...
These calls can fail not only due to OOM.
2023-10-19 21:37:33 +08:00
Mike Yuan
bbe92ea5cc
core/namespace: merge if blocks
2023-10-19 21:37:33 +08:00
Luca Boccassi
9dc6a6af28
executor: fix double free of MountOptions
...
This list is owned by ExecContext, which is cleaned up when sd-executor
fails, but it is also cleaned up when namespace setup exits, so we get
a double free.
Fixes https://github.com/systemd/systemd/issues/29610
Follow-up for bb5232b6a3
2023-10-19 14:24:55 +01:00
Luca Boccassi
41204a6d74
Merge pull request #29617 from keszybz/efi-no-xmalloc0
...
efi: drop duplicate initialization to 0
2023-10-19 14:23:54 +01:00
Arseny Maslennikov
8b45281daa
seccomp: also check the mode parameter of fchmodat2(2)
...
If there is no libseccomp support, just ban the entire syscall instead
so wrappers will fall back to older, supported syscalls.
Also reflect all of this in `test-seccomp.c`.
2023-10-19 15:53:58 +03:00
Arseny Maslennikov
6e10405aa2
seccomp: include fchmodat2 in @file-system
2023-10-19 15:53:45 +03:00
Yu Watanabe
be3b6b6fe5
cgroup-util: drop dead code block
...
Follow-up for 4d1b2df199 .
Fixes CID#1522888.
2023-10-19 20:24:54 +08:00
Arseny Maslennikov
3677364cc3
basic/missing_syscall: generate defs for fchmodat2(2)
...
We will need this to set seccomp filters on this system call regardless
of libseccomp or kernel support.
2023-10-19 14:07:54 +03:00
Arseny Maslennikov
c83f838193
Update system call tables for Linux 6.6
...
We are doing this to obtain the definition of fchmodat2.
2023-10-19 14:07:54 +03:00
Arseny Maslennikov
a539314a87
seccomp: fix debug logging typo
...
Fixes: da4dc9a674 ("seccomp: rework how the S[UG]ID filter is installed")
2023-10-19 14:07:54 +03:00
Luca Boccassi
1ca8cc9fb6
Merge pull request #29595 from YHNdnzj/systemctl-failed-system
...
systemctl: is-failed: check if system is degraded when no unit given
2023-10-19 12:07:37 +01:00
Zbigniew Jędrzejewski-Szmek
6e98ddf825
efi: drop unused xmalloc0()
...
Keeping this separate to make it easy to revert if it's ever needed again.
2023-10-19 12:24:53 +02:00
Zbigniew Jędrzejewski-Szmek
586f19976a
efi: do not memzero fields before initializing them
...
In all three cases we immediately overwrite the whole field anyway,
so the call to memzero is not needed.
2023-10-19 12:24:53 +02:00
Arthur Shau
1bd0b9c053
varlink: Add new varlink_collect method
...
varlink_collect is meant to be used when the client is willing to wait for the reply from the varlink method, much like varlink_call.
However, unlike varlink_call, it allows the client to collect all "more" replies that may be sent by method before the "final" reply is enqueued.
It aggregates all of these replies into a json variant array that it returns to the client.
2023-10-19 11:52:09 +02:00
Yu Watanabe
0c3d606c50
core/namespace: split out create_temporary_mount_point()
...
No functional change, preparation for later commits.
2023-10-19 18:45:51 +09:00
Yu Watanabe
cbdac0c33a
tree-wide: check results of PAGE_ALIGN()
...
Fixes CID#1491282, CID#1491283, CID#1491285, CID#1491288.
2023-10-19 18:31:44 +09:00
Yu Watanabe
c886f2d26e
mmap-cache: check offset and size more carefully
...
PAGE_ALIGN() and friends take size_t, while offset is uint64_t.
Let's use macros for uint64_t.
Also, mmap() takes size_t for size. So, let's also use size_t to
calculate a window size.
Prompted by CID#1491286.
2023-10-19 18:31:44 +09:00
Yu Watanabe
ffee7b97e3
macro: introduce u64_multiply_safe() to avoid overflow
...
Just a paranoia.
2023-10-19 18:31:44 +09:00
Yu Watanabe
b39907c712
sd-journal: use PAGE_ALIGN_U64() and friends
...
This also make constants declared with UINT64_C().
2023-10-19 18:31:44 +09:00
Yu Watanabe
2977904cad
macro: introduce several helper functions for alignment
...
Some of them are not used in this commit, but will be used later.
2023-10-19 18:31:44 +09:00
Yu Watanabe
d54c0f37d8
macro: paranoia about overflow
...
E.g. Consider the case ALIGN_TO(SIZE_MAX - 3, 4). The overflow check
passes as the condition
```
SIZE_MAX - 3 > SIZE_MAX - (4 - 1)
```
is false.
However, the value
```
l + ali - 1
```
may overflow as it is equivalent to
```
SIZE_MAX - 3 + 4 - 1
```
2023-10-19 18:31:44 +09:00
Yu Watanabe
86cbbc6d05
tree-wide: check if return value of lseek() and friends is negative
...
We usually check return value of syscalls or glibc functions by it is
negative or not, something like that `if (stat(path, &st) < 0)`.
Let's also use the same style for lseek() and friends even the type of
their return value is off_t.
Note, fseeko() returns int, instead of off_t.
2023-10-19 18:31:44 +09:00
Frantisek Sumsal
4820c9d417
fuzz: unify logging setup
...
Make sure we don't log anything when running in "fuzzing" mode. Also,
when at it, unify the setup logic into a helper, pretty similar to
the test_setup_logging() one.
Addresses:
- https://github.com/systemd/systemd/pull/29558#pullrequestreview-1676060607
- https://github.com/systemd/systemd/pull/29558#discussion_r1358940663
2023-10-19 10:05:20 +01:00
Frantisek Sumsal
892eb4d795
core: don't assert when serializing malformed state
2023-10-18 22:44:16 +02:00
Frantisek Sumsal
81c4be64da
test: add a fuzzer for exec_{serialize,deserialize}_invocation()
2023-10-18 22:44:16 +02:00
Mike Yuan
2ee346160c
systemctl: is-failed: check if system is degraded when no unit given
...
Closes #3335
2023-10-19 00:12:28 +08:00
Mike Yuan
def1e20a18
systemctl: minor modernization
2023-10-19 00:12:27 +08:00
Lennart Poettering
81c1c387fe
Merge pull request #29594 from poettering/cgroup-rename-ret-params
...
more pidfdification
2023-10-18 17:25:44 +02:00
Lennart Poettering
06044356de
manager: move idle_pipe allocation to manager.c and make it atomic
...
Let's make sure it either fails or suceeds, but never fails half-way
leaving a half-initialized array around.
2023-10-18 16:07:41 +01:00
Lennart Poettering
d0547385d9
test-cgroup: make test case a bit more robust towards previous aborted runs
2023-10-18 14:49:40 +02:00
Lennart Poettering
2d79017564
killall: port killing spree loop over to PidRef
2023-10-18 14:49:40 +02:00
Lennart Poettering
957f84e950
test: port tests over to new /proc/ enumeration API
2023-10-18 14:49:40 +02:00
Lennart Poettering
eefb7d22ce
process-util: add API for enumerating processes in /proc/ and pinning them via PidRef
2023-10-18 14:49:40 +02:00
Lennart Poettering
4d9f092b5e
process-util: add pidref_is_unwaited() and make pid_is_unwaited() return errors
2023-10-18 14:49:40 +02:00
Lennart Poettering
6774be4206
process-util: add pidref_is_my_child()
2023-10-18 14:49:40 +02:00
Lennart Poettering
becdfcb9f1
process-util: change pid_is_alive() to not eat up errors, and add pidref_is_alive()
...
Let's no eat up errors, but propagate unexpected ones.
2023-10-18 14:40:25 +02:00
Lennart Poettering
8b51341545
process-util: add pidref_get_uid() and rename get_process_uid() → pidref_get_uid()
2023-10-18 14:39:33 +02:00
Lennart Poettering
4d1b2df199
core: port unit/process kill logic to pidref
2023-10-18 14:39:33 +02:00
Lennart Poettering
a7a877697f
pidref: add new pidref_is_self() helper
...
This simply checks if the specified PidRef refers to the process we are
running in.
(In case you wonder why this is not a static inline: to avoid cyclic
header inclusion problems between pidref.h + process-util.h)
2023-10-18 14:39:33 +02:00
Lennart Poettering
d7d748548b
process-util: add pidref_get_comm() and rename get_process_comm() to pid_get_comm()
2023-10-18 14:39:33 +02:00
Lennart Poettering
d57d521cae
dbus-unit: make sure GetProcesses() D-Bus call internally uses pidfd
...
This way we can be sure to provide an atomic view of the process tree of
a unit.
2023-10-18 14:39:33 +02:00
Lennart Poettering
fc87713bed
process-util: add pidref_is_kernel_thread()
2023-10-18 14:39:33 +02:00
Lennart Poettering
a034620f1a
process-util: add pidref_get_cmdline()
2023-10-18 14:39:33 +02:00
Lennart Poettering
6f25a110ad
cgroup-show: use size_t for array sizes
2023-10-18 14:39:33 +02:00
Lennart Poettering
3d7ba61a7b
pidref: we never have to verify PID 1
...
The process exists as long as the kernel/userns exists at all, hence we
don't have to verify a pidfd to it.
2023-10-18 14:39:33 +02:00
Lennart Poettering
f2a2e60be6
cgroup-util: make cg_pidref_get_path() PidRef parameter const
2023-10-18 14:39:33 +02:00
Lennart Poettering
44c55e5a3f
pidref: make signal sending calls take const PidRef
2023-10-18 14:38:07 +02:00
Lennart Poettering
cf45db5598
fd-util: use close_many() where appropriate
2023-10-18 14:03:47 +02:00