Commit Graph
5068 Commits
Author SHA1 Message Date
Yu Watanabe 6475926a59 cgroup-util: drop 'controller' argument from cg_path_open()
Nowadays it always takes SYSTEMD_CGROUP_CONTROLLER as controller.
Let's drop it.

No functional change, just refactoring.
2025-11-17 21:30:29 +09:00
Yu Watanabe 4365351b93 cgroup-util: introduce cg_is_available() and check it in tests
Now most of our code does not support cgroup v1. Let's skip test cases
if we are running on cgroup v1.
2025-11-17 21:29:51 +09:00
Emil Renner BerthingandYu Watanabe 3bc03c67f0 musl: add fallback parse_printf_format() implementation
musl does not provide parse_printf_format(). Let's introduce a fallback
method.

Co-authored-by: Yu Watanabe <watanabe.yu+github@gmail.com>
2025-11-17 12:19:22 +09:00
Yu Watanabe bf9bc5beb0 musl: meson: add libutmps support
musl only provides fake functions, hence even with -Dutmp=true,
utmp/wtmp functionalities do not work. Let's allow to build with
libutmps.
2025-11-17 12:18:44 +09:00
Yu Watanabe a112c7646b tree-wide: swap arguments for streq()
We usually set a variable first, then constant.
2025-11-16 14:01:56 +09:00
Lennart Poettering 8209f4adcd resolved: add hook api
This introduces /run/systemd/resolve.hook/ as a new directory that local
(privileged) programs can bind a Varlink socket into. If they do they'll
get a method call for each attempted resolved lookup, which they can
then either process themselves (and generate new records for, or return
errors to block stuff) or let pass so that the regular resolution is
done.

Usecase for this is primarily two things:

1. in machined we can add local resolution of machine names to their IP
   addresses, similar in fashion to nss-mymachines, but working also if
   the non-NSS interfaces to name resolution are used, i.e. the local
   DNS responder. In fact, I think we should eventually remove
   nss-mymachines from our tree, as soon as this code in resolved is
   setlled.

2. in networkd we can add local resolution of names specified in DHCP
   leases we hand out.

But beyond that there should be many other uses, for example people
could write "dns firewalls" with this if they like where they
dynamically block certain names from resolution.

Fixes: #8518
2025-11-15 07:44:24 +01:00
Yu Watanabe 6412e540bc path-util: add generic ignore extension to the hidden files (#39554) 2025-11-15 10:05:38 +09:00
Yu Watanabe 384e88a238 musl: stdio: check if stream is writable earlier in fputs() and friends 2025-11-15 05:10:33 +09:00
Daan De Meyer 6403a81b28 test-cgroup-util: Skip test on ESTALE
The kernel converts a bunch of errors to ESTALE in the open_by_handle_at()
codepath so we treat it as missing privs but it could be absolutely
anything really.
2025-11-14 09:19:01 +01:00
Daan De Meyer 1312353fdd test-rm-rf: Check capabilities
The assertion will succeed if we have the right capability, causing the
test to fail.
2025-11-14 09:19:01 +01:00
Daan De Meyer a0fb74153d test-id128: Check capability instead of uid 2025-11-14 09:19:01 +01:00
Yu Watanabe 03d0fa4e4f musl: introduce dummy function for gnu_get_libc_version()
As the header gnu/libc-version.h and gnu_get_libc_version() function
are glibc specific, and musl does not provide them.
2025-11-14 04:59:03 +09:00
Yu Watanabe aec0e63a4f musl: test: several random fixlets for unit tests 2025-11-14 03:29:21 +09:00
Yu Watanabe 1abe8dd9eb efivarfs readv() size fixes and more (#39715)
Fixes: #39695
2025-11-14 00:38:29 +09:00
Yu Watanabe 32d1bed50b tree-wide: assorted fixes/workarounds for supporting musl (#39687) 2025-11-14 00:16:50 +09:00
Lennart Poettering f5452477d4 tree-wide: fix lseek() parameter order
The offset must be specified first, 'whence' second. Fix that.

Except for one case this fix doesn't actually fix any real bug, since
SEEK_SET is defined as 0 anyway, hence the swapped arguments have no
effect.

The one exception is the MTD smartmedia code, which I guess indicates
that noone has been using that hw anymore in a long time?
2025-11-13 14:19:29 +01:00
Yu Watanabe e9c5af74ea test: move several test cases to test-tmpfile-util.c 2025-11-13 09:19:56 +09:00
Yu Watanabe 6300e2a9ee test: move several test cases to test-env-file.c 2025-11-13 09:19:56 +09:00
Yu Watanabe cd62f9ad71 test-fileio: migrate to use new ASSER_OK() macro and friends
This also replaces fgets() with read_full_file().
2025-11-13 09:19:28 +09:00
Yu Watanabe 3866923a68 musl: core: there is one less usable signal when built with musl
musl internally reserves one more signal, hence we can only use 29
signals.
2025-11-13 08:02:05 +09:00
Yu Watanabe fe6e6cb6a0 time-util: several fixlets/workarounds for supporting musl (#39688) 2025-11-13 05:18:25 +09:00
Yu Watanabe ca3933bf49 core/dbus-service: validate type of received ExecContext fds (#39680) 2025-11-13 05:11:07 +09:00
Daan De Meyer e182d66faa test-varlink: Migrate to new assertion macros 2025-11-12 19:59:05 +01:00
Yu Watanabe f8a3ae1be6 musl: test-time-util: skip parsing back when currently unused timezone is set 2025-11-13 03:13:59 +09:00
Yu Watanabe 6431f2e072 musl: time-util: introduce get_tzname() helper function
musl leaves the DST timezone name unset if there is no DST.
The helper function maps that back to no DST.
2025-11-13 03:13:55 +09:00
Mike YuanandChris Down 2c5d73660e test-fd-util: add unit test for fd_vet_accmode()
Co-authored-by: Chris Down <chris@chrisdown.name>
2025-11-12 15:44:50 +01:00
Daan De Meyer e81dc81a5c test-rm-rf: Migrate to new assertion macros 2025-11-12 14:24:14 +01:00
Daan De Meyer 0d21ab7377 tests: Return result from some ASSERT() macros 2025-11-12 14:20:24 +01:00
Yu Watanabe 9b55c4b859 tree-wide: drop redundant inclusion of linux/prctl.h
sys/prctl.h anyway includes linux/prctl.h and actually these .c files
includes sys/prctl.h. Hence, it is not necessary to explicitly include
linux/prctl.h.
2025-11-12 14:17:44 +08:00
Mike Yuan 4175cd4f40 acl-util: drop now unused fd_acl_make_writable() 2025-11-10 23:06:14 +01:00
Yu Watanabe 76c674ec25 resolve: use enum for several fields
Unfortunately, we have already exposed dnssec with hyphen, so we cannot
change it as enum.
2025-11-10 11:02:33 +09:00
Yu Watanabe e3ea1cfd5e tree-wide: add several missing includes
- test-reread-partition-table.c: sys/file.h for LOCK_EX
- coredump: unistd.h for STDIN_FILENO
2025-11-10 09:36:52 +09:00
Anton Tiurin dd2934d44e network: expose Describe Varlink, use for networkctl list & status
Both `list` and `status` with `--json=pretty|short` show the description.
It is fetched via D-Bus by org.freedesktop.network1.Manager.Describe

This change exposes the same data via Varlink API `io.systemd.Network.Describe`
and migrates networkctl list and status commands to use Varlink API.

Update GetStates IDL to use enums for link states.
2025-11-08 00:08:00 +09:00
Christoph Anton Mitterer eee941bb6e test-path-util: add test for the generic ignore hidden/backup extension 2025-11-04 17:10:11 +01:00
Lennart Poettering 030f239a19 varlink-idl: add infra to test our enum parsers against varlink IDL enums
In many cases we want to expose enums for which we have the usual
xyz_to_string()/xyz_from_string() via Varlink as enums. Let's add some
infra to test the tables against each other, to automatically detect
when they deviate.

In order to implement this properly, let's export/introduce clean
json_underscorefy()/json_dashify(), for dealing with the fact that our
enums usually use dash separates ames, but Varlink doesn't allow that.

(This does not add the test cases for all enum types we expose right
now, but only adds the general infra).
2025-11-04 11:46:17 +00:00
Daan De Meyer 10e82fde7b parse-util: Add parse_capability_set()
Let's extract common capability parsing code into a generic function
parse_capability_set() with a comprehensive set of unit tests.

We also replace usages of UINT64_MAX with CAP_MASK_UNSET where
applicable and replace the default value of CapabilityBoundingSet
with CAP_MASK_ALL which more clearly identifies that it is initialized
to all capabilities.

AI (copilot) was used to extract the generic function and write the
unit tests, with manual review and fixing afterwards to make sure
everything was correct.
2025-11-02 04:47:21 +09:00
Daan De Meyer 1a3b3c57c6 test: migrate test-load-fragment to use ASSERT_* macros
Replace all assert_se() calls with appropriate ASSERT_* macros from tests.h:
- assert_se(r >= 0) → ASSERT_OK(r)
- assert_se(r == 0) → ASSERT_OK_ZERO(r)
- assert_se(r == -ERR) → ASSERT_ERROR(r, ERR)
- assert_se(expr == value) → ASSERT_EQ(expr, value)
- assert_se(str1, str2) → ASSERT_STREQ(str1, str2)
- assert_se(ptr) → ASSERT_NOT_NULL(ptr)
- assert_se(!ptr) → ASSERT_NULL(ptr)
- assert_se(expr) → ASSERT_TRUE(expr)
- assert_se(!expr) → ASSERT_FALSE(expr)

Also added unsigned suffixes (U) to numeric literals in comparisons with
unsigned types (size_t, rlim_t) to eliminate signedness warnings.

This code was written with the help of AI.
2025-11-02 04:47:21 +09:00
Yu Watanabe cbd8a12bce Several cleanups around strv_extendf() (#39508) 2025-11-01 18:10:42 +09:00
Yu Watanabe 19bbcd35d7 strv: introduce strv_extend_joined() and strv_extend_joined_with_size() 2025-11-01 00:59:36 +09:00
Yu Watanabe 3c66f40262 strv: introduce strv_extendf_with_size() 2025-11-01 00:58:39 +09:00
Daan De Meyer 9e26ced980 core: Add RootDirectoryFileDescriptor=
RootDirectory= but via a open_tree() file descriptor. This allows
setting up the execution environment for a service by the client in
a mount namespace and then starting a transient unit in that execution
environment using the new property.

We also add --root-directory= and --same-root-dir= to systemd-run to
have it run services within the given root directory. As systemd-run
might be invoked from a different mount namespace than what systemd is
running in, systemd-run opens the given path with open_tree() and then
sends it to systemd using the new RootDirectoryFileDescriptor= property.
2025-10-31 13:09:51 +01:00
Daan De Meyer 92ea9584c6 test-namespace: Migrate to new assertion macros 2025-10-30 13:36:05 +01:00
Yu Watanabe 687bb9e2ce test: sort libraries in test-dlopen-so 2025-10-25 14:03:13 +09:00
Yu Watanabe d0520b1ee7 module-util: drop 'sym_' prefix from cleanup functions 2025-10-25 11:12:16 +09:00
Daniel Hast 101dd41cb4 tree-wide: add basic validation of --background argument
Check whether the argument of the `--background` option of
`systemd-run`, `run0`, `systemd-nspawn`, `systemd-vmspawn`, and
`systemd-pty-forward` is either empty or looks like an ANSI color code,
and reject invalid values when parsing arguments.

We consider a string to look like an ANSI color code if it consists of
one or more sequences of ASCII digits separated by semicolons. This
permits every valid ANSI color code, and should reject anything that
results in garbled output.
2025-10-25 09:56:31 +09:00
Yu Watanabe 9b414a38fa tree-wide: drop unused libcap dependencies 2025-10-24 01:52:59 +09:00
Yu Watanabe 2bf880892e test: use have_inheritable_cap() in test_apply_ambient_caps()
This also make the test case use ASSERT_XYZ() macros.
2025-10-24 01:52:59 +09:00
Yu Watanabe 96f2255637 test: replace cap_to_text() with capability_get() and capability_set_to_string() 2025-10-24 01:52:59 +09:00
Yu Watanabe aa8ab67a6d capability-util: introduce capability_apply() and use it in capability_ambient_set_apply() 2025-10-24 01:52:59 +09:00
Yu Watanabe 7de349c1ed test: use CAP_LIMIT at one more place 2025-10-24 01:52:56 +09:00