Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 68c7004236 network/dhcp4: send release message before stopping the client
Otherwise, the socket is already closed and sending release will be
anyway skipped.

With this patch, release message is sent before stopping the client.
```
Jan 20 18:29:41 systemd[1]: Stopping systemd-networkd.service - Network Management...
Jan 20 18:29:41 systemd-networkd[3821255]: wlp59s0: DHCPv4 client: RELEASE
Jan 20 18:29:41 systemd-networkd[3821255]: wlp59s0: DHCPv4 client: STOPPED
Jan 20 18:29:41 systemd-networkd[3821255]: wlp59s0: DHCP lease lost
```

Fixes #39299.
2026-01-21 15:50:35 +01:00
Yu Watanabe e6a25c2fc7 stat-util: make proc_mounted() not update errno
Typically, proc_mounted() is used in error handling. Hence, it is better
to make it not update the original errno.

Currently, there are two places that returns wrong error code:
- pidref_get_capability() in src/basic/capability-util.c
```c
        _cleanup_fclose_ FILE *f = fopen(path, "re");
        if (!f) {
                if (errno == ENOENT && proc_mounted() == 0)
                        return -ENOSYS;

                return -errno;
        }
```
- fdset_new_fill() in src/shared/fdset.c
```c
        d = opendir("/proc/self/fd");
        if (!d) {
                if (errno == ENOENT && proc_mounted() == 0)
                        return -ENOSYS;

                return -errno;
        }
```

Rather than fixing them, let's make proc_mounted() not update errno,
otherwise we may make a similar failure in a future.
2026-01-20 22:37:04 +09:00
Yu Watanabe 9503cc3b6d resolve: include current DNS server in JSON again (#40396)
Fixes a regression caused by c6b6ac63ea.
2026-01-20 09:41:51 +09:00
Yu Watanabe 8a5fb3627a vmspawn: use indexed loop
Previously, the index is obtained from the pointer offset. The
pointer offset is expressed by ptrdiff_t and may be different from
ssize_t.

Let's avoid to use FOREACH_ARRAY() but use an indexed loop.
This also renames `mount` to `m` to avoid conflict with `mount()`.

Fixes #40380.
2026-01-20 02:26:35 +09:00
Yu Watanabe 3d2284c7db journal/audit: do not use strjoina() for arbitrary length of received string
Otherwise, when a long message is received, the assertion in strjoina()
may be triggered.

Fixes oss-fuzz#476768320 (https://issues.oss-fuzz.com/issues/476768320).
Fixes #40388.
2026-01-20 01:29:32 +09:00
Yu Watanabe 1580907953 audit-type: include alloc-util.h for newa() (#40389)
The macro audit_type_name_alloca() needs newa() which is defined in
alloc-util.h.
2026-01-19 16:31:39 +01:00
Yu Watanabe b7dd507cae tree-wide: use consistent format of short comment for constant argument
Follow-ups for recent changes after 93378148d4.
2026-01-20 00:22:15 +09:00
Yu Watanabe 67040ea2bc More legacy kernel support removal; follow-ups for XAT_FDROOT (#40384) 2026-01-19 23:10:17 +09:00
Yu Watanabe c02f81cb2d include: update linux kernel headers from v6.19-rc5 2026-01-18 15:32:08 +01:00
Yu Watanabe 112cbc3790 journal-file: do not trigger assertion on removed or corrupted journal file
When a journal file is removed or corrupted, then the value `p`, which is
read from Object.data.entry_offset, may be zero.

Note, journal_file_move_to_object() checks the passed offset and return
-EBADMSG if it is invalid.

Fixes the issue reported at
https://github.com/systemd/systemd/pull/40372#issuecomment-3762907261.
2026-01-18 21:25:20 +09:00
Yu Watanabe fe7692227d mountfsd: fix potential memleak on malicious json message
This also makes json_log_oom() used on OOM.

Follow-up for 78b40aea61.
2026-01-18 18:03:21 +09:00
Yu Watanabe f02e4b4f38 Several follow-ups for removal of SysV compat (#40371) 2026-01-18 18:02:53 +09:00
Yu Watanabe ff9c4ace70 mkosi/opensuse: do not build/install systemd-sysvcompat package
The package is now empty. It is not necessary to build it.

This also drops unnecessary modifications for files.*.
2026-01-18 15:49:37 +09:00
Yu Watanabe badff4ce2a meson: update description of deprecated options 2026-01-18 15:48:02 +09:00
Yu Watanabe a3f0d88fee systemctl: drop unnecessary shortcut for removed SysV compat support
Follow-up for 986fee6217.
2026-01-18 15:48:02 +09:00
Yu Watanabe 01885138be Assorted cleanups (#40373) 2026-01-18 14:41:44 +09:00
Yu Watanabe 7d23749ddd mkfs-utils: also set $E2FSPROGS_FAKE_TIME if $SOURCE_DATE_EPOCH is set
Follow-up for 7bf0d0c46e.

To support e2fsprogs older than v1.47.1 (released 2024-05-21).

Suggested-by: ZauberNerd <zaubernerd@zaubernerd.de>
2026-01-17 08:45:50 +09:00
Yu Watanabe 3da9b65b30 hwdb: make three more hwdb files parsed by parse_hwdb.py
This also makes 70-lights.hwdb installed. The file was introduced by
106f64cbd6, but never installed.

Moreover, this makes the parser also check bluetooth modalias patterns.
2026-01-17 02:53:14 +09:00
Yu Watanabe 4ac445c152 udev/net: support more ethtool features
Closes #39318.
2026-01-17 02:52:20 +09:00
Yu Watanabe b5100a4569 conf-files: several cleanups and fixlets (#40290)
Fixes #40313.
Closes #40285.
2026-01-17 02:51:17 +09:00
Yu Watanabe d5a7f58d1a Also drop SysV rc.local script support (#40295)
Continuation of #39770.
2026-01-17 02:50:08 +09:00
Yu Watanabe 2aa496312e conf-files: introduce CONF_FILES_WARN flag and set it at various places
Closes #40285.
2026-01-16 23:05:33 +09:00
Yu Watanabe f25d9e7c0e udevadm: log path prefixed with the specified root directory 2026-01-16 23:05:33 +09:00
Yu Watanabe 782569afd0 udevadm: gracefully handle when a maked file is specified to udevadm verify/cat
Previously, since 7cb4508c5a, if a masked
file is specified, the commands failed.
Let's warn that the file is masked and ignore the file.
2026-01-16 23:05:33 +09:00
Yu Watanabeandgvenugo3 f212522923 pretty-print: do not fail when cat_files() tries to show a masked file
Before 661b5bfd21, cat_files() does not
check if a file is regular. If the file is a symlink to /dev/null, then
cat_files() simply shows an empty contents for the file.
With the offending commit, as the CHASE_MUST_BE_REGULAR flag is set,
hence when we found a masked file, the function fails.

Fixes #40313.
Fixes regression caused by 661b5bfd21.

Co-authored-by: gvenugo3 <gvenugo3@asu.edu>
2026-01-16 23:05:28 +09:00
Yu Watanabe 5d0dc9915c conf-files: make conf_file_new() take ConfFilesFlags rather than ChaseFlags
No functional change, preparation for later commit.
2026-01-16 23:01:04 +09:00
Yu Watanabe 0c109deda1 conf-files: use empty_to_root()
No functional change. For consistency with conf_file_chase_and_verify().
2026-01-16 23:01:04 +09:00
Yu Watanabe 4a8e0ea4ec conf-files: split out several helper functions from files_add()
No functional change, preparation for later commit.
2026-01-16 23:01:01 +09:00
Yu Watanabe 3de84f2381 NEWS: mention about the removal of sysv init script support 2026-01-16 22:57:39 +09:00
Yu Watanabe d207be293c Drop support for SysV rc-local script support
As already announced for several years.
2026-01-16 22:56:28 +09:00
Yu Watanabe 6e1d97fa2c mkosi: update debian commit reference to 93a222266c23ff73720f4de009a027d3556baee4
* 93a222266c Do not install rc-local generator in upstream build
2026-01-16 22:56:28 +09:00
Yu Watanabe 0a2cdd5891 Drop remaining references about sysv script support
Follow-up for 986fee6217.
2026-01-16 22:56:08 +09:00
Yu Watanabe 18de7dd90f integration tests: do not adjust log level of udevd in the test script
Similar to 5c60d3011f, but for udevd.
2026-01-14 16:32:38 +01:00
Yu Watanabe 04f05d9bd7 network: drop fallback logic for kernel older than v5.6
Now our baseline is kernel v5.10.
2026-01-14 16:31:12 +01:00
Yu Watanabe 49eb2d50b4 Bump kernel requirements to >= 5.10, and recommend >= 5.14 (#38977)
Then, this drops several unnecessary code for older kernels.
2026-01-13 12:18:15 +09:00
Yu Watanabe fce7ad481b process-util: drop unnecessary E2BIG error handling
E2BIG is returned when the kernel does not support CLONE_INTO_CGROUP,
but the flag is supported since kernel v5.7.
2026-01-13 10:21:36 +09:00
Yu Watanabe 80c5b63db5 mount-setup: memory_recursiveprot is supported since kernel v5.7
Our baseline on kernel is 5.10. Hence we can unconditionally use it.
2026-01-13 10:21:36 +09:00
Yu Watanabe d58c826c54 fd-util: drop close_all_fds_by_proc()
With the previous commit, now the function is used only on OOM.
In that case, let's do like close_all_fds_without_malloc().
2026-01-13 10:21:36 +09:00
Yu Watanabe c471cca093 fd-util: close_range() is available since kernel 5.9
Our baseline on kernel is 5.10, hence we can always use it.
2026-01-13 10:21:36 +09:00
Yu Watanabe d377cc5244 stat-util: STATX_TYPE and STATX_INO should be always set 2026-01-13 10:21:05 +09:00
Yu Watanabe 7ecfa87c56 fd-util,mountpoint-util: STATX_MNT_ID is supported since kernel 5.10
Our baseline on kernel is 5.10, hence we can assume it works.
2026-01-13 10:21:05 +09:00
Yu Watanabe 7f6cf19513 mountpoint-util: make is_mount_point_at() take usual dir_fd + path style arguments 2026-01-13 10:21:05 +09:00
Yu Watanabe a98a6eb95c tree-wide: statx() supports STATX_ATTR_MOUNT_ROOT since kernel 5.8
Our baseline on kernel is 5.10, hence we can unconditionally use it.
2026-01-13 10:21:04 +09:00
Yu Watanabe ec21e5c58e random-util: assume getrandom(GRND_INSECURE) works
GRND_INSECURE was added in kernel 5.6, and our baseline on kernel is
5.10. Let's assume it always works. Even if it does not work, we have
further fallback logics. So, this should be safe.
2026-01-13 10:21:04 +09:00
Yu Watanabe 1aeba33d8f Bump required minimum kernel version to 5.10 and the recommended baseline to 5.14.
The previous minimum required version 5.4 will be EOL on 2025-12.
Let's bump the required minimum kernel version to the next LTS release 5.10
(released on 2020-12-13, EOL on 2026-12, CIP support until 2031-01).

The new recommended baseline 5.14 is the version that CentOS 9 uses.
CentOS 9 will EOL on 2027-05.

See also #38608.
2026-01-13 10:21:04 +09:00
Yu Watanabe 9e36307a8a network: ignore -EINVAL from bpf_get_current_comm()
Hopefully fixes #40051.
2026-01-13 08:32:03 +09:00
Yu Watanabe 716246f235 man: fix indentation 2026-01-12 18:33:58 +09:00
Yu Watanabe 5366dbdbd4 core: fix typo
Follow-up for 32614b9aab.
2026-01-08 12:20:22 +09:00
Yu Watanabe 3ff23e8c4b man: do not manually update man/rules/meson.build
Follow-up for 25393c7c90.
2026-01-06 22:50:47 +01:00
Yu Watanabe 17ea504efb core: change mount options settings so that last defined wins (#39449) 2026-01-07 04:11:29 +09:00
Yu Watanabe a6d553c4f4 Drop support for sysvinit scripts (#39770)
As announced by a few releases now, finally drop support for sysvinit scripts.
2026-01-07 02:51:53 +09:00
Yu Watanabe 0ab02b67d4 core: add support for disabling THPs (#39085)
Transparent Hugepages (THP) is a Linux kernel feature that manages
memory using larger pages (2MB on x86, compared to the default 4KB). The
main goal is to improve memory management efficiency and system
performance, especially for memory-intensive applications. However, it
can cause drawbacks in some scenarios, such as memory regression and
latency spikes. THP policy is governed for the entire system via
/sys/kernel/mm/transparent_hugepage/enabled.
However, it can be overridden for individual workloads via prctl(2) call.
MemoryTHP= is used to disable THPs at exec-invoke to stop providing THPs
for workloads where the drawbacks outweigh the advantages. When set to
"disable", MemoryTHP= disables THPs completely for the process,
irrespective of global THP controls.

[1] https://man7.org/linux/man-pages/man2/PR_SET_THP_DISABLE.2const.html
[2] https://man7.org/linux/man-pages/man2/madvise.2.html
[3] https://github.com/torvalds/linux/commit/9dc21bbd62edeae6f63e6f25e1edb7167452457b
2026-01-07 01:36:20 +09:00
Yu Watanabe 9bad7610f8 man: fix typo 2026-01-06 08:48:05 +09:00
Yu Watanabe 423ba555ac pstore: fix typo 2026-01-06 08:45:22 +09:00
Yu Watanabe 776c3d7f90 import: update comment: implementor -> implementer
Both implementor and implementer are correct, but we use implementer at
other places.
2026-01-06 08:43:05 +09:00
Yu Watanabe fc48bf0c6b TEST-13-NSPAWN: remove pulled image on exit
Otherwise, if the VM is unexpectedly rebooted, then `importctl --user pull-tar`
may fail as the file may already exist.
```
[  123.351751] TEST-13-NSPAWN.sh[3946]: + run0 -u testuser importctl --user pull-tar file:///var/tmp/image-tar/kurps.tar.gz nurps --verify=checksum -m
[  123.541603] TEST-13-NSPAWN.sh[4311]: Enqueued transfer job 3. Press C-c to continue download in background.
[  123.552456] TEST-13-NSPAWN.sh[4311]: Pulling 'file:///var/tmp/image-tar/kurps.tar.gz', saving as 'nurps'.
[  123.552788] TEST-13-NSPAWN.sh[4311]: Operating on image directory '/home/testuser/.local/state/machines'.
[  123.819942] TEST-13-NSPAWN.sh[4311]: Got 1% of file:///var/tmp/image-tar/kurps.tar.gz.
[  124.156557] TEST-13-NSPAWN.sh[4311]: * shutting down connection #0
[  124.156896] TEST-13-NSPAWN.sh[4311]: * Could not open file /var/tmp/image-tar/kurps.tar.gz.sha256
[  124.157223] TEST-13-NSPAWN.sh[4311]: * closing connection #-1
[  124.159198] TEST-13-NSPAWN.sh[4311]: * Could not open file /var/tmp/image-tar/kurps.nspawn
[  124.159493] TEST-13-NSPAWN.sh[4311]: * closing connection #-1
[  124.159818] TEST-13-NSPAWN.sh[4311]: Acquired 68.5M.
[  124.160395] TEST-13-NSPAWN.sh[4311]: Download of file:///var/tmp/image-tar/kurps.tar.gz complete.
[  124.160664] TEST-13-NSPAWN.sh[4311]: Transfer failed: Could not read a file:// file
[  124.160923] TEST-13-NSPAWN.sh[4311]: Settings file could not be retrieved, proceeding without.
[  124.404733] TEST-13-NSPAWN.sh[4311]: * shutting down connection #1
[  124.405162] TEST-13-NSPAWN.sh[4311]: Acquired 79B.
[  124.406170] TEST-13-NSPAWN.sh[4311]: Download of file:///var/tmp/image-tar/SHA256SUMS complete.
[  124.406734] TEST-13-NSPAWN.sh[4311]: SHA256 checksum of file:///var/tmp/image-tar/kurps.tar.gz is valid.
[  124.455446] TEST-13-NSPAWN.sh[4311]: Failed to rename to final image name to /home/testuser/.local/state/machines/.tar-file:\x2f\x2f\x2fvar\x2ftmp\x2fimage-tar\x2fkurps\x2etar\x2egz: File exists
[  124.457251] TEST-13-NSPAWN.sh[4311]: Exiting.
```
Workaround for issue #38240.
2026-01-06 04:54:48 +09:00
Yu Watanabe 76ed202b7f compress: do not call lzma_end_wrapper() when failed to load liblzma
Fixes a bug in 3fc72d5413 (v256).
Fixes #40277.
2026-01-05 21:30:27 +09:00
Yu Watanabe 47d70d3a1b test-time-util: ignore failure on MSK timezone
Ignore the following failures:
- with glibc
```
TZ=Europe/Volgograd, tzname[0]=MSK, tzname[1]=MSD
@1414277092997572 → Sun 2014-10-26 01:44:52 MSK → @1414273492000000 → Sun 2014-10-26 01:44:52 MSK
src/test/test-time-util.c:448: Assertion failed: Expected "ignore" to be true
```
- with musl
```
TZ=Europe/Kirov, tzname[0]=MSK, tzname[1]=MSK
@1414277092997572 → Sun 2014-10-26 01:44:52 MSK → @1414273492000000 → Sun 2014-10-26 01:44:52 MSK
src/test/test-time-util.c:448: Assertion failed: Expected "ignore" to be true
```
2026-01-05 17:48:36 +09:00
Yu Watanabe f056560da7 meson: remove deprecated meson options
These options are deprecated since
- 87541e254f : -Dcryptolib=
- 710653d3bc : -Dintegration-tests=
2026-01-05 08:26:07 +09:00
Yu Watanabe 615dfad334 mkosi: update debian commit reference to f05328feafba2156f31e17e0e2c144cfa7c66e72
* f05328feaf Drop use of deprecated options
* 19ed139d85 Mark sd-userdbd as Multi-Arch: foreign
2026-01-05 08:26:07 +09:00
Yu Watanabe 472404aca5 udev: downgrade log level about failure in notification
These may fail on shutdown/reboot, as the notification socket is already
closed.

Closes #39943.
2026-01-05 07:25:16 +09:00
Yu Watanabe 36c557f7d4 daemon-util: introduce notify_remove_fd()
It is equivalent to notify_remove_fd_warn() but logs in debug level on
failure.
2026-01-05 07:24:54 +09:00
Yu Watanabe 2c751f3420 Tweak setting of boot timeout variables (#40125) 2026-01-05 06:50:49 +09:00
Yu Watanabe 3a1231f4c7 core: several follow-ups (#40140)
Replaces #39925
Closes #39925
2026-01-05 06:31:48 +09:00
Yu Watanabe 4b23f4f4c2 nss-systemd: always fill sg_adm and sg_mem in shadow groups (#40218)
The `sg_adm` and `sg_mem` fields are not always set in shadow groups,
which can lead to issues with foreign tools like shadow's `sg` command.
Since other NSS implementations properly set these fields and it would
otherwise be impossible to access `administrators` and `members`
information from JSON files, it's bets to always fill these fields.

Even though `sg` is a nice example which should be already installed,
the issue itself can be reproduced with this simple program as well. It
relies on filled `sg_adm` and `sg_mem` fields just like `sg` does:

```
#include <err.h>
#include <gshadow.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
        struct sgrp *s;
        char **p;

        if (argc != 2)
                errx(1, "usage: poc group");

        s = getsgnam(argv[1]);
        printf("name: %s\n", s->sg_namp);
        printf("admins:\n");
        p = s->sg_adm;
        while (*p != NULL) {
                printf("- %s\n", *p);
                p++;
        }
        printf("members:\n");
        p = s->sg_mem;
        while (*p != NULL) {
                printf("- %s\n", *p);
                p++;
        }
}
```

Run it like this: `./poc root`

Proof of Concept (Arch Linux, which uses systemd with systemd-userdbd
and shadow's sg):

```
$ grep systemd /etc/nsswitch.conf 
passwd: files systemd
group: files [SUCCESS=merge] systemd
shadow: files systemd
gshadow: files systemd
```

Issue with intrinsic groups:

Run as unprivileged user, who has no access to `/etc/gshadow` to trigger
nss-systemd (strace disables setuid of sg)
```
$ strace sg root
write(2, "sg: list.c:169: is_on_list: Asse"..., 61sg: list.c:169: is_on_list: Assertion `NULL != list' failed.
) = 61
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa7e9c0c000
gettid()                                = 1882
getpid()                                = 1882
tgkill(1882, 1882, SIGABRT)             = 0
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=1882, si_uid=1000} ---
+++ killed by SIGABRT (core dumped) +++
Aborted                    (core dumped) strace sg root
```

Issue with groups through systemd-userdbd:

1. Create a custom group (as root)
```
cat > /etc/userdb/sg-poc.group << EOF
{
  "groupName": "sg-poc",
  "gid": 6123,
  "administrators": [
    "root"
  ],
  "members": [
    "bin"
  ]
}
EOF
ln -s sg-poc.group /etc/userdb/6123.group
```

2. Verify that group actually exists
```
$ userdbctl group sg-poc
  Group name: sg-poc
 Disposition: regular
         GID: 6123
      Admins: root
     Service: io.systemd.NameServiceSwitch
```

3. Run `sg` to switch into group `sg-poc` as regular user, this time
with setuid, i.e. no strace as before
```
$ sg sg-poc
sg: list.c:169: is_on_list: Assertion `NULL != list' failed.
Aborted                    (core dumped) sg sg-poc
```
2026-01-05 03:12:26 +09:00
Yu Watanabe c1f873b4f4 Logging cleanups (#40271) 2026-01-05 03:06:09 +09:00
Yu Watanabe cf79f61238 calendarspec: day of month also needs to be reset when year is changed
Fixes #40260.
2026-01-04 20:05:43 +09:00
Yu Watanabe e67ad3e586 core/dynamic-user: two trivial modernizations (#40264) 2026-01-04 07:26:19 +09:00
Yu Watanabe cb39d66ec8 core: do not provide non-dynamic user through DBus/Varlink
With a service with DynamicUser= with static user or group, e.g.,
```
$ systemd-run -p DynamicUser=yes -p Group=disk sleep infinity
```
previously the lookup by name and ID through DBus/Varlink are inconsistent:
```
$ busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LookupDynamicUserByUID "u" 6
Call failed: Dynamic user ID 6 does not exist.

$ busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LookupDynamicUserByName "s" disk
u 6

$ userdbctl group 6
  Group name: disk
 Disposition: system
         GID: 6
   Passwords: 1
     Service: io.systemd.NameServiceSwitch

$ userdbctl group disk
  Group name: disk
 Disposition: dynamic
         GID: 6
 Description: Dynamic Group
     Service: io.systemd.DynamicUser
```

With this change, the results of these methods are consistent.

Fixes #40228.
2026-01-03 19:57:44 +01:00
Yu Watanabe 30b9fa495c clang-tidy: Enable more warnings (#39910) 2026-01-03 06:00:30 +09:00
Yu Watanabe 2553c53730 tools: drop unnecessary sys/capability.h header
After 9b414a38fa (#39425), the header is
not required. And after b295c166f9, the
header is not installed in CI environments.
2026-01-02 08:46:05 +01:00
Yu Watanabe 6d2c9c2203 tools: show each command to make it easier to debug 2026-01-02 08:46:05 +01:00
Yu Watanabe fe3c790f71 tools: allow to run setup-musl-build.sh for already set up directory 2026-01-02 08:46:05 +01:00
Yu Watanabe 508dc4c3fa Require libxcrypt >= 4.4.0 and drop libcrypt support (#38974)
This drops support of libcrypt provided by glibc, and always use
libxcrypt.
This also makes libxcrypt dlopen() dependency.
2026-01-02 14:32:12 +09:00
Yu Watanabe d0b224f845 libcrypt-util: turn into dlopen() dependency
Note, this drops logging only test case for crypt_preferred_method(),
as that requires explicitly dlopen() the library. But, we should test
that make_salt() and friends automatically dlopen() it.
2026-01-02 13:06:14 +09:00
Yu Watanabe 8de783a288 libcrypt: allow to build systemd without libcrypt/libxcrypt
libcrypt is only used by firstboot, homed, and sysusers, which can be
disabled by meson option.
Let's not require the library unconditionally.
2026-01-02 12:55:57 +09:00
Yu Watanabe 5863641bb7 Require libxcrypt-4.4.0 or newer and drop support of libcrypt
libcrypt was no longer built by default since glibc-2.38, and it has been
completely removed since glibc-2.39.

Let's always use libxcrypt, unless when building with musl. As already
major distribution already have libxcrypt-4.4.x, hence let's also bump
the required minimum version to 4.4.0.

libxcrypt cannot be built with musl, hence the previous fallback logic
in libcrypt-util.c are moved to musl/crypt.c.

Note, libxcrypt-4.4.0 was released on 2018-11-20.
See also #38608.
2026-01-02 12:55:53 +09:00
Yu Watanabe 431fc656bc Bump required minimum version of libseccomp to 2.4.0
Major distributions already have libseccomp 2.5.x or newer.
Let's bump to the required minimum version to 2.4.0, which provides
SCMP_ACT_KILL_PROCESS, SCMP_ACT_LOG, SCMP_ARCH_PARISC, and
SCMP_ARCH_PARISC64.

Note, libseccomp 2.4.0 was released on 2019-03-15.

See also #38608.
2026-01-02 12:54:18 +09:00
Yu Watanabe 8608d2e910 test-libcrypt-util: use DEFINE_TEST_MAIN() and ASSERT_XYZ()
Also, tests for make_salt() in test-user-util.c are moved to
test-libcrypt-util.c.
2026-01-02 12:54:01 +09:00
Yu Watanabe d5267b2275 libcrypt-util: add missing assertions 2026-01-02 12:54:01 +09:00
Yu Watanabe b26406c9c3 libcrypt-util: drop unused hash_passwrod_full()
It is only used by test cases. Not necessary to keep it.
2026-01-02 12:54:00 +09:00
Yu Watanabe d274748160 libcrypt-util: move looks_like_hashed_password()
No functional change, just preparation for later change.
2026-01-02 12:54:00 +09:00
Yu Watanabe 23c82484e7 Bump required minimum version of cryptsetup to 2.4.0
Major distributions already have cryptsetup newer than 2.4.0.
Let's bump the minimal required version.

Note, cryptsetup 2.4.0 was released on 2021-08-18.

See also #38608.
2026-01-02 11:15:17 +09:00
Yu Watanabe 9ba0e5674b Bump required minimum version of elfutils to 0.177
Major distributions already have elfutils >= 0.190.
Let's bump the required minimum version.

Note, elfutils 0.177 was released on 2019-08-14.

See also #38608.
2026-01-02 11:12:27 +09:00
Yu Watanabe e4fd21a777 Bump required minimum version of blkid to 2.37
Major distributions already have blkid >= 2.37.
Let's bump the minimal required version.

Note, util-linux (which provides blkid) 2.37 was released on 2021-06-01.

See also #38608.
2026-01-02 11:12:05 +09:00
Yu Watanabe 99d0a9fdb0 Bump required minimum version of OpenSSL to 3.0.0
All major distributions have switched to OpenSSL version 3.x.
Let's drop support of OpenSSL version 1.x.

Note, OpenSSL 3.0 was released on 2021-09-07 (and will be EOL on 2026-09-07).

See also #38608.
2026-01-02 11:09:52 +09:00
Yu Watanabe 33340fbe44 man: drop redundant 'and'
Also swap the order of entries, to make it consistent for other unit
types.

Follow-up for 79dd24cf14.
2026-01-02 09:52:31 +09:00
Yu Watanabe cb9d854207 network: Support interface-bound ECMP routes in MultiPathRoute= (#39742)
MultiPathRoute= can now specify device-only nexthops without a gateway
address, e.g. MultiPathRoute=@wg0. This enables ECMP configurations over
interfaces that don't use gateway addresses, such as WireGuard tunnels.

The syntax is extended from "address[@device] [weight]" to
"[address]@device [weight]". The address is now optional, but at least
one of gateway or device must be specified. The @ symbol must still be
present for device-only routes, making the syntax unambiguous: @wg0
specifies a device, while a bare IP address specifies a gateway.

Device-only nexthops are only available for IPv4 routes. Device-only
multipath routes for IPv6 are not supported by the kernel's netlink
interface and will be rejected with a warning.

This change is fully backwards compatible. All existing configurations
continue to work unchanged, as they always included a gateway address.

Closes #39699.
2026-01-02 09:25:43 +09:00
Yu Watanabe 2ff1a84b19 docs: update password agent document (#40235)
Adding some missing information from the code to the docs.
2026-01-02 08:03:37 +09:00
Yu Watanabe f29a0b3151 dissect-image: fix typo
Follow-up for 771085291d.
2026-01-02 04:32:48 +09:00
Yu Watanabe 78247787e9 ssh-proxy: fix typo
Follow-up for dc3e544104.
2026-01-02 04:30:58 +09:00
Yu Watanabe b6abe84602 core: fix extensions refreshing (dlopen() shenanigans) (#40112) 2025-12-17 18:41:23 +09:00
Yu Watanabe 650fc62526 TEST-70-TPM2: re-enable tpm2-setup test on Alpine/postmarketOS
After 64b5c5f593, the test passes on
Alpine/postmarketOS.

This partially reverts 9fafe89bcc.
2025-12-16 21:10:12 +00:00
Yu Watanabe fd2cdadc14 integration-test: check tools distribution rather than image distribution
The tools and image distributions may be different.

This also fixes invalid escape sequence.

Follow-up for 9b42cc3b12.
2025-12-15 23:11:47 +09:00
Yu Watanabe 28826f6ba9 test: use test-sleep executable in softreboot and coredump tests
This partially reverts 355bcc243c.
2025-12-15 18:20:53 +09:00
Yu Watanabe 4c98063d6e test: introduce our own sleep command for testing 2025-12-15 18:09:21 +09:00
Yu Watanabe 78385b8e94 time-util: make usleep_safe() support USEC_INFINITY 2025-12-15 18:09:21 +09:00
Yu Watanabe b8241d3ca5 time-util: continue sleeping when clock_nanosleep() fail with EINTR
The function clock_nanosleep() provides remaining time when failed with
EINTR. Let's continue sleeping in that case.
2025-12-15 17:50:19 +09:00
Yu Watanabe 2960889a2c mount-util: fix typo
Follow-up for 273c6bc045.
2025-12-15 11:20:29 +09:00
Yu Watanabe 82e3f6c5f9 sysext: Fix config file section docs and --root= (#40063) 2025-12-15 09:45:29 +09:00