]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
2 years agomeson: add missing include directory when using xkbcommon
Antonio Alvarez Feijoo [Wed, 15 Sep 2021 06:46:40 +0000 (08:46 +0200)] 
meson: add missing include directory when using xkbcommon

Otherwise the build fails:

FAILED: systemd-localed.p/src_locale_localed.c.o
cc -Isystemd-localed.p -I. -I.. -Isrc/basic -I../src/basic -Isrc/fundamental -I../src/fundamental -Isrc/systemd -I../src/systemd -I../src/libsystemd/sd-bus -I../src/libsystemd/sd-device -I../src/libsystemd/sd-event -I../src/libsystemd/sd-hwdb -I../src/libsystemd/sd-id128 -I../src/libsystemd/sd-journal -I../src/libsystemd/sd-netlink -I../src/libsystemd/sd-network -I../src/libsystemd/sd-resolve -Isrc/shared -I../src/shared -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu99 -g -Wno-format-signedness -Wno-missing-field-initializers -Wno-unused-parameter -Wdate-time -Wendif-labels -Werror=format=2 -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Werror=overflow -Werror=return-type -Werror=shift-count-overflow -Werror=shift-overflow=2 -Werror=undef -Werror=unused-function -Wfloat-equal -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op -Wmissing-include-dirs -Wmissing-noreturn -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-aliasing=2 -Wstrict-prototypes -Wsuggest-attribute=noreturn -Wwrite-strings -Wno-unused-result -Werror=missing-declarations -Werror=missing-prototypes -fdiagnostics-show-option -ffast-math -fno-common -fno-strict-aliasing -fstack-protector -fstack-protector-strong -fvisibility=hidden --param=ssp-buffer-size=4 -Werror=shadow -include config.h -MD -MQ systemd-localed.p/src_locale_localed.c.o -MF systemd-localed.p/src_locale_localed.c.o.d -o systemd-localed.p/src_locale_localed.c.o -c ../src/locale/localed.c
../src/locale/localed.c:9:10: fatal error: xkbcommon/xkbcommon.h: No such file or directory
    9 | #include <xkbcommon/xkbcommon.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

2 years agoRespect install_sysconfdir
Kai Wohlfahrt [Mon, 13 Sep 2021 23:32:52 +0000 (00:32 +0100)] 
Respect install_sysconfdir

This was lost e11a25cadbe and c900d89faa0 while adding jinja2
templating. Breaks builds on NixOS.

2 years agosd-journal: Don't compare hashes from different journal files
Daan De Meyer [Tue, 14 Sep 2021 14:08:46 +0000 (15:08 +0100)] 
sd-journal: Don't compare hashes from different journal files

In sd_journal_enumerate_fields(), we check if we've already handled
a field by checking if we can find it in any of the already processed
journal files. We do this by calling
journal_file_find_field_object_with_hash(), which compares the size,
payload and hash of the given field against all fields in a journal file,
trying to find a match. However, since we now use per file hash functions,
hashes for the same fields will differ between different journal files,
meaning we'll never find an actual match.

To fix the issue(), let's use journal_file_find_field_object() when one
or more of the files we're comparing is using per file keyed hashes.
journal_file_find_field_object() only takes the field payload and size
as arguments and calculates the hash itself using the hash function from
the journal file we're searching in.

2 years agoFix error building repart with no libcryptsetup (#20739)
Marcus Harrison [Wed, 15 Sep 2021 01:55:07 +0000 (03:55 +0200)] 
Fix error building repart with no libcryptsetup (#20739)

2 years agopo: Translated using Weblate (Finnish)
Jan Kuparinen [Tue, 14 Sep 2021 19:04:59 +0000 (21:04 +0200)] 
po: Translated using Weblate (Finnish)

Currently translated at 100.0% (189 of 189 strings)

Co-authored-by: Jan Kuparinen <copper_fin@hotmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/fi/
Translation: systemd/main

2 years agoman: extend documentation about TPM2 PCRs
Lennart Poettering [Tue, 14 Sep 2021 13:19:25 +0000 (15:19 +0200)] 
man: extend documentation about TPM2 PCRs

This is an effort to compile a somewhat complete list how PCRs are
actually used on Linux systems these days. It contains data from: the
UEFI PC spec, the shim, the IMA, grub documentation.

I validated these PCRs to some level in the sources.

The grub specific stuff I only added in comments, since I was too lazy
too validate it (also, meh, grub).

It also gives people a hint on which PCR to bind to (and maybe kind of
an explanation of our default choice).

2 years agoMerge pull request #20697 from yuwata/in-addr-prefix
Lennart Poettering [Tue, 14 Sep 2021 13:58:20 +0000 (15:58 +0200)] 
Merge pull request #20697 from yuwata/in-addr-prefix

core: rewrite IPAddressAllow/Deny= parser

2 years agodocs: generic info about adding directives in ARCHITECTURE.md
Luca Boccassi [Mon, 13 Sep 2021 14:57:54 +0000 (15:57 +0100)] 
docs: generic info about adding directives in ARCHITECTURE.md

2 years agonetwork: replace config_parse_address_filter() with config_parse_in_addr_prefixes() 20697/head
Yu Watanabe [Fri, 10 Sep 2021 06:08:54 +0000 (15:08 +0900)] 
network: replace config_parse_address_filter() with config_parse_in_addr_prefixes()

2 years agocore: replace IPAddressAccessItem with struct in_addr_prefix
Yu Watanabe [Fri, 10 Sep 2021 04:58:28 +0000 (13:58 +0900)] 
core: replace IPAddressAccessItem with struct in_addr_prefix

Previously, if a unit file which contains n IPAddressAllow/Deny= lines,
then the computational order of parsing the file was O(n^3), as
ip_address_access_reduce(), whose order is O(n^2), is called for each line.

By replacing in_addr_prefix related functions, now the computational
order is O(n log n).

Fixes #20680.

2 years agocore/cgroup: set bitfield to reduce struct size
Yu Watanabe [Tue, 14 Sep 2021 05:11:08 +0000 (14:11 +0900)] 
core/cgroup: set bitfield to reduce struct size

2 years agotest: add tests for in-addr-prefix-util.c
Yu Watanabe [Tue, 14 Sep 2021 05:55:25 +0000 (14:55 +0900)] 
test: add tests for in-addr-prefix-util.c

2 years agotest: slightly modernize test-in-addr-util.c
Yu Watanabe [Tue, 14 Sep 2021 05:31:59 +0000 (14:31 +0900)] 
test: slightly modernize test-in-addr-util.c

2 years agoin-addr-prefix-util: introduce several utilities for address prefix
Yu Watanabe [Tue, 14 Sep 2021 05:10:33 +0000 (14:10 +0900)] 
in-addr-prefix-util: introduce several utilities for address prefix

2 years agoMerge pull request #20700 from yuwata/network-dhcp-cleanups
Yu Watanabe [Tue, 14 Sep 2021 11:29:27 +0000 (20:29 +0900)] 
Merge pull request #20700 from yuwata/network-dhcp-cleanups

network: several DHCP related cleanups

2 years agonetwork: do not use RouteTable= in [DHCPv4] section for DHCPv6 routes 20700/head
Yu Watanabe [Wed, 8 Sep 2021 00:35:34 +0000 (09:35 +0900)] 
network: do not use RouteTable= in [DHCPv4] section for DHCPv6 routes

We forgot to add RouteTable= in [DHCPv6] section when we split [DHCP]
into two.

2 years agoAdd additional Dell models that require ACCEL_LOCATION=base
Yao Wei (魏銘廷) [Wed, 8 Sep 2021 05:55:49 +0000 (13:55 +0800)] 
Add additional Dell models that require ACCEL_LOCATION=base

This is a related commit to the bug reported in Ubuntu:
  https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1938259

This adds additional 4 models that without this param, the screen rotates
when the clamshell laptop rotates, which is an unwanted behavior.

This commit also merges entries that needs the same param.

Signed-off-by: Yao Wei (魏銘廷) <yao.wei@canonical.com>
2 years agoMerge pull request #20713 from yuwata/udev-watch-retry
Lennart Poettering [Tue, 14 Sep 2021 07:40:23 +0000 (09:40 +0200)] 
Merge pull request #20713 from yuwata/udev-watch-retry

udev-watch: retry to save watch handle on error

2 years agonetwork: use ltype to distinguish DHCPv4 and DHCPv6
Yu Watanabe [Tue, 7 Sep 2021 23:39:26 +0000 (08:39 +0900)] 
network: use ltype to distinguish DHCPv4 and DHCPv6

2 years agonetwork: dhcp4: use free_and_strdup_warn()
Yu Watanabe [Wed, 8 Sep 2021 04:50:59 +0000 (13:50 +0900)] 
network: dhcp4: use free_and_strdup_warn()

2 years agonetwork: dhcp4: log server address
Yu Watanabe [Wed, 8 Sep 2021 04:49:29 +0000 (13:49 +0900)] 
network: dhcp4: log server address

2 years agonetwork: dhcp4: return earlier on failure
Yu Watanabe [Wed, 8 Sep 2021 04:39:22 +0000 (13:39 +0900)] 
network: dhcp4: return earlier on failure

2 years agonetwork: move common route settings to {dhcp4,ndisc}_request_route()
Yu Watanabe [Wed, 8 Sep 2021 04:02:36 +0000 (13:02 +0900)] 
network: move common route settings to {dhcp4,ndisc}_request_route()

2 years agotest-network: kernel treats the lowest IP address as unicast since 5.14
Yu Watanabe [Mon, 13 Sep 2021 17:50:37 +0000 (02:50 +0900)] 
test-network: kernel treats the lowest IP address as unicast since 5.14

See kernel's 94c821c74bf5fe0c25e09df5334a16f98608db90.

2 years agoescape: improve logging when escaping paths that are slightly non-conforming
Lennart Poettering [Mon, 13 Sep 2021 13:40:00 +0000 (15:40 +0200)] 
escape: improve logging when escaping paths that are slightly non-conforming

Fixes: #20663
2 years agovirt: Improve detection of EC2 metal instances
Benjamin Herrenschmidt [Fri, 3 Sep 2021 01:36:46 +0000 (11:36 +1000)] 
virt: Improve detection of EC2 metal instances

The current detection code relies on /sys/firmware/dmi/entries/0-0/raw
to disambiguate Amazon EC2 virtualized from metal instances.

Unfortunately this file is root only. Thus on a c6g.metal instance
(aarch64), we observe something like this:

$ systemd-detect-virt
amazon
$ sudo systemd-detect-virt
none

Only the latter is correct.

The right long term fix is to extend the kernel to expose the SMBIOS BIOS
Characteristics properly via /sys/class/dmi, but until this happens (and
for backwards compatibility when it does), we need a plan B.

This change implements such a workaround by falling back to using the
instance type from DMI and looking at the ".metal" string present on
metal instances.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2 years agoMerge pull request #20716 from poettering/tpm2-primary-rsa
Lennart Poettering [Mon, 13 Sep 2021 15:12:20 +0000 (17:12 +0200)] 
Merge pull request #20716 from poettering/tpm2-primary-rsa

tpm2: be smarter when picking primary key algorithm and PCR bank

2 years agoupdate TODO 20716/head
Lennart Poettering [Mon, 13 Sep 2021 12:06:54 +0000 (14:06 +0200)] 
update TODO

2 years agotpm2: log about invalid PCRs on each unsealing
Lennart Poettering [Mon, 13 Sep 2021 10:43:53 +0000 (12:43 +0200)] 
tpm2: log about invalid PCRs on each unsealing

Let's log every time we use uninitialized PCRs when unsealing a secret
via TPM2. This indicates a firmware issue usually, and is something we
shouldn't just show when enrolling but also show every time we unseal,
so that the fact that the selected PCR policy is pretty much pointless
is repeatedly shown.

2 years agotpm2: check if PCR values make sense before using them
Lennart Poettering [Mon, 13 Sep 2021 09:23:41 +0000 (11:23 +0200)] 
tpm2: check if PCR values make sense before using them

Fixes: #20684
2 years agotpm2: support RSA primary keys as fallback if TPM2 devices don't support ECC
Lennart Poettering [Mon, 13 Sep 2021 08:52:43 +0000 (10:52 +0200)] 
tpm2: support RSA primary keys as fallback if TPM2 devices don't support ECC

Previously, we hardcoded use of ECC as primary keys, since they are much
faster (i.e. saving multiple seconds) to do TPM2 operations with. Alas,
not all TPM2 chips appear to support ECC. Bummer.

Let's hence add a fallback logic: if we can't create an ECC primary key,
use an RSA key, and store that fact away.

AFIU the security guarantees should be roughly the same, it's just that
RSA primary keys is so much slower to work with than ECC.

The primary key algorithm is used is stored in the JSON header of LUKS
disks, in a new field. If the field is absent we assume to use ECC, to
provide full compatibility with old systemd versions.

The primary key algorithm is stored in a new field in the credentials
file format (in fact, a previously unused zero space is used), too.

Hopefully, this should ensure that TPM2 support will "just work" on more
systems.

Fixes: #20361
2 years agomemory-util: replace memeqzero() by a more generic memeqbyte()
Lennart Poettering [Mon, 13 Sep 2021 10:33:21 +0000 (12:33 +0200)] 
memory-util: replace memeqzero() by a more generic memeqbyte()

The new helper can check for any byte, no just zeroes. The old name is
then converted into a macro that wraps our new version of the helper.

2 years agoMerge pull request #20701 from yuwata/network-address-cleanups
Luca Boccassi [Mon, 13 Sep 2021 10:12:43 +0000 (11:12 +0100)] 
Merge pull request #20701 from yuwata/network-address-cleanups

network: several address_update() related cleanups

2 years agoudev-watch: retry to save watch handle with random delay 20713/head
Yu Watanabe [Sun, 12 Sep 2021 06:49:22 +0000 (15:49 +0900)] 
udev-watch: retry to save watch handle with random delay

Also, remove the watch handle if we cannot save it.

2 years agosd-device: do not recreate the same symlinks which store watch handle
Yu Watanabe [Sun, 12 Sep 2021 06:47:08 +0000 (15:47 +0900)] 
sd-device: do not recreate the same symlinks which store watch handle

2 years agoMerge pull request #20715 from yuwata/udev-node-follow-ups
Yu Watanabe [Mon, 13 Sep 2021 02:51:55 +0000 (11:51 +0900)] 
Merge pull request #20715 from yuwata/udev-node-follow-ups

udev-node: several follow-ups

2 years agoMerge pull request #20672 from mrc0mmand/more-storage-tests
Yu Watanabe [Mon, 13 Sep 2021 02:50:51 +0000 (11:50 +0900)] 
Merge pull request #20672 from mrc0mmand/more-storage-tests

test: more storage-related tests

2 years agotest: coverage for #19946 20672/head
Frantisek Sumsal [Fri, 10 Sep 2021 15:16:51 +0000 (17:16 +0200)] 
test: coverage for #19946

2 years agotest: make sure all symlinks under /dev/disk/ are valid
Frantisek Sumsal [Fri, 10 Sep 2021 11:04:58 +0000 (13:04 +0200)] 
test: make sure all symlinks under /dev/disk/ are valid

2 years agotest: add a basic multipath test + failover
Frantisek Sumsal [Wed, 8 Sep 2021 16:26:02 +0000 (18:26 +0200)] 
test: add a basic multipath test + failover

2 years agotest: add a multipath helper
Frantisek Sumsal [Wed, 8 Sep 2021 16:17:46 +0000 (18:17 +0200)] 
test: add a multipath helper

2 years agotest: use one call to install necessary modules
Frantisek Sumsal [Wed, 8 Sep 2021 12:57:55 +0000 (14:57 +0200)] 
test: use one call to install necessary modules

2 years agoMerge pull request #20705 from yuwata/test-oomd-util
Luca Boccassi [Sun, 12 Sep 2021 11:56:46 +0000 (12:56 +0100)] 
Merge pull request #20705 from yuwata/test-oomd-util

test: skip oomd test on a unified container on a hybrid host

2 years agotest: tweak parameters for TEST-55-OOMD
Anita Zhang [Sun, 12 Sep 2021 07:02:31 +0000 (00:02 -0700)] 
test: tweak parameters for TEST-55-OOMD

Pressure remains > 1% after a kill for some time and could cause
testchill to get killed. Bumping the limit from 1% to 20% should help
with this.

Fixes #20118

2 years agoudev-node: do not ignore unexpected errors on removing symlink in stack directory 20715/head
Yu Watanabe [Sun, 12 Sep 2021 07:14:27 +0000 (16:14 +0900)] 
udev-node: do not ignore unexpected errors on removing symlink in stack directory

Only acceptable error here is -ENOENT.

2 years agoudev-node: simplify the example of race
Yu Watanabe [Sun, 12 Sep 2021 07:05:51 +0000 (16:05 +0900)] 
udev-node: simplify the example of race

2 years agounit: systemd-oomd.service requires cgroup memory controller 20705/head
Yu Watanabe [Sat, 11 Sep 2021 11:56:15 +0000 (20:56 +0900)] 
unit: systemd-oomd.service requires cgroup memory controller

2 years agotest-oomd-util: skip tests if cgroup memory controller is not available
Yu Watanabe [Sat, 11 Sep 2021 11:37:50 +0000 (20:37 +0900)] 
test-oomd-util: skip tests if cgroup memory controller is not available

Fixes #20593 and #20655.

2 years agooomd: refuse to start if cgroup memory controller is not available
Yu Watanabe [Sat, 11 Sep 2021 11:34:53 +0000 (20:34 +0900)] 
oomd: refuse to start if cgroup memory controller is not available

2 years agosd-boot: Fix assertion fail
Jan Janssen [Sat, 11 Sep 2021 09:14:06 +0000 (11:14 +0200)] 
sd-boot: Fix assertion fail

The UEFI Platform Initialization Specification says that both
parameters may be NULL.

2 years agocgroup-util: use string_hash_ops_free
Yu Watanabe [Sat, 11 Sep 2021 11:29:34 +0000 (20:29 +0900)] 
cgroup-util: use string_hash_ops_free

2 years agocgroup-util: use _cleanup_free_ attribute
Yu Watanabe [Sat, 11 Sep 2021 11:26:58 +0000 (20:26 +0900)] 
cgroup-util: use _cleanup_free_ attribute

2 years agotpm-util: fix TPM parameter handling
Anatol Pomozov [Fri, 10 Sep 2021 18:52:55 +0000 (11:52 -0700)] 
tpm-util: fix TPM parameter handling

cryptenroll allows to specify a custom TPM driver separated from
parameters with colon e.g. `systemd-cryptenroll --tpm2-device=swtpm:`
tells to load swtpm tss driver and use it as a device.

Unfortunately it does not work, swtpm driver init() fails with

```
debug:tcti:src/tss2-tcti/tcti-swtpm.c:570:Tss2_Tcti_Swtpm_Init() Dup'd conf string to: 0x562f91cbc000
debug:tcti:src/util/key-value-parse.c:85:parse_key_value_string() parsing key/value: swtpm:
WARNING:tcti:src/util/key-value-parse.c:50:parse_key_value() key / value string is invalid
Failed to initialize TCTI context: tcti:A parameter has a bad value
```

It turns out that cryptenroll suppose to use the driver name internally
and strip it before passing the rest of parameters to init() function.
Without doing it swtpm receives incorrect key-value property and gets
confused.

Fix it by passing the correct parameter (without driver name) to the
init() function.

Fixes #20708

2 years agonetwork: do not drop IPv6LL address in link_drop_addresses() 20701/head
Yu Watanabe [Wed, 8 Sep 2021 07:18:52 +0000 (16:18 +0900)] 
network: do not drop IPv6LL address in link_drop_addresses()

2 years agonetwork: always call address ready callback if address is ready
Yu Watanabe [Wed, 8 Sep 2021 06:57:55 +0000 (15:57 +0900)] 
network: always call address ready callback if address is ready

The address ready callback is used for cleaning up old addresses or
routes acquired by e.g. DHCP. However, the callback was called only
when the address was previously not ready. So, maybe, unnecessary
addresses or routes may not be cleared.

Also, this makes the callback is called slightly earlier. As it may
remove several addresses or routes, and possibly changes the link state.

2 years agonetwork: define Address earlier
Yu Watanabe [Wed, 8 Sep 2021 07:11:36 +0000 (16:11 +0900)] 
network: define Address earlier

As the type is used in defining address_ready_callback_t.

2 years agonetwork: store IPv6LL address even if link is in failed state
Yu Watanabe [Wed, 8 Sep 2021 06:52:53 +0000 (15:52 +0900)] 
network: store IPv6LL address even if link is in failed state

Otherwise, if IPv6LL is received when the link is in failed state,
we may fail to reconfigure the link.

2 years agonetwork: enable IP masquerade when address is assigned
Yu Watanabe [Wed, 8 Sep 2021 06:39:41 +0000 (15:39 +0900)] 
network: enable IP masquerade when address is assigned

Previously, IP masquerade is enabled when configuring the address. But,
the request of assigning the address may be refused by kernel.

2 years agonetwork: simplify code a bit
Yu Watanabe [Wed, 8 Sep 2021 06:37:48 +0000 (15:37 +0900)] 
network: simplify code a bit

2 years agoMerge pull request #20699 from yuwata/network-drop-foreign
Luca Boccassi [Fri, 10 Sep 2021 20:10:58 +0000 (21:10 +0100)] 
Merge pull request #20699 from yuwata/network-drop-foreign

network: do not drop foreign configs when carrier of unmanaged interface is lost

2 years agoMerge pull request #20702 from yuwata/network-trivial-cleanups
Luca Boccassi [Fri, 10 Sep 2021 20:10:40 +0000 (21:10 +0100)] 
Merge pull request #20702 from yuwata/network-trivial-cleanups

network: several trivial cleanups

2 years agonetwork: fix handling of network interface renaming
Yu Watanabe [Thu, 9 Sep 2021 23:09:56 +0000 (08:09 +0900)] 
network: fix handling of network interface renaming

Fixes #20657.

2 years agoMerge pull request #20703 from poettering/gpt-dissect-tweaks
Lennart Poettering [Fri, 10 Sep 2021 18:48:31 +0000 (20:48 +0200)] 
Merge pull request #20703 from poettering/gpt-dissect-tweaks

dissect: various small tweaks/tougher checks/refactoring of GPT dissection code

2 years agocore: Parse log environment settings again after applying manager environment
Daan De Meyer [Tue, 7 Sep 2021 15:13:56 +0000 (16:13 +0100)] 
core: Parse log environment settings again after applying manager environment

Currently, SYSTEMD_LOG_LEVEL set in the ManagerEnvironment property in system.conf
or user.conf doesn't affect the manager's logging level. Parsing the logging environment
variables again after pushing the manager environment into the process environment
block makes sure any new environment changes also get taken into account for logging.

2 years agodissect-image: replace redundant if check by assert() 20703/head
Lennart Poettering [Thu, 9 Sep 2021 09:41:52 +0000 (11:41 +0200)] 
dissect-image: replace redundant if check by assert()

We know that the designator can only be USR or ROOT (or negative), hence
let's test that with an assert here, instead of doing an if check.

2 years agodissect-image: insist that if a verity partition designator is specified the partitio...
Lennart Poettering [Thu, 9 Sep 2021 09:38:52 +0000 (11:38 +0200)] 
dissect-image: insist that if a verity partition designator is specified the partition exists

Let's tighten our checks further.

2 years agodissect-image: tighten checks on root + /usr/ combinations
Lennart Poettering [Thu, 9 Sep 2021 09:33:03 +0000 (11:33 +0200)] 
dissect-image: tighten checks on root + /usr/ combinations

Our code logic doesn't support images with two verity partitions at the
moment, hence refuse this early (with ENOTUNIQ)

Also, go even further and refuse any combinations of verity enabled root
with verity-less /usr, simplify because that is unsafe and defeats the
point of verity. (i.e. we want to give the guarantee that for
auto-discovered verity magic we guarantee that the data afterwards
available in /usr is safe).

2 years agodissect-image: drop redundant check
Lennart Poettering [Thu, 9 Sep 2021 09:29:19 +0000 (11:29 +0200)] 
dissect-image: drop redundant check

We already check whether we discovered a /usr verity partition without a
/usr partition when initially mangling the partitions, a bunch of lines
further up, no need to repeat this here.

2 years agodissect-image: don't do generic root partition fallback if verity is requested for...
Lennart Poettering [Thu, 9 Sep 2021 09:18:47 +0000 (11:18 +0200)] 
dissect-image: don't do generic root partition fallback if verity is requested for /usr

2 years agodissect-image: insist that the architecture matches if both root and /usr partitions...
Lennart Poettering [Thu, 9 Sep 2021 09:24:44 +0000 (11:24 +0200)] 
dissect-image: insist that the architecture matches if both root and /usr partitions are found

2 years agodissect-image: mangle discovered /usr/ partition data, even if we found a root partition
Lennart Poettering [Thu, 9 Sep 2021 09:12:23 +0000 (11:12 +0200)] 
dissect-image: mangle discovered /usr/ partition data, even if we found a root partition

Previously, we'd clean up discovered /usr/ partition data only if we did
not find a root partition. Given that we allow combinations of root and
/usr partitions clean things up in both cases however.

2 years agodissect-image: refuse external verity data in partitioned mode
Lennart Poettering [Wed, 8 Sep 2021 15:30:33 +0000 (17:30 +0200)] 
dissect-image: refuse external verity data in partitioned mode

Our code doesn't support setting up verity with an external verity data
file unless we operate in non-partitioned mode. Let's refuse this
clearly and early if attempted anyway.

2 years agodissect-image: also derive read-only mode from fstype in non-partitioned mode
Lennart Poettering [Wed, 8 Sep 2021 15:29:06 +0000 (17:29 +0200)] 
dissect-image: also derive read-only mode from fstype in non-partitioned mode

For the GPT partitioned logic we also consult the fstype to determine whether
a partition is read-only (i.e. squashfs is already read-only). For the
non-partitioned mode we didn't do that so far. Fix that.

2 years agodissect-image: tighten assertion checks on verity data
Lennart Poettering [Wed, 8 Sep 2021 15:28:37 +0000 (17:28 +0200)] 
dissect-image: tighten assertion checks on verity data

2 years agodissect-image: rename dissected_image_has_verity()/_can_do_verity()
Lennart Poettering [Wed, 8 Sep 2021 15:26:32 +0000 (17:26 +0200)] 
dissect-image: rename dissected_image_has_verity()/_can_do_verity()

Let's also pick more precise names for these helpers that are used for
the tabular output: one checks whether a partition is candidate for
verity at all, and the other checks if it is ready to be used for it.
Let's make this clearer in the name.

2 years agodissect-image: rename verity flag booleans
Lennart Poettering [Wed, 8 Sep 2021 14:56:42 +0000 (16:56 +0200)] 
dissect-image: rename verity flag booleans

Let's make the booleans indicating verity state a bit more descriptive.

Let's rename:

    can_verity → has_verity: because that's really what this about
    whether verity data is included in the image. Whether we actually
    can use it is a different story.

    verity → verity_ready: this one should tell us if we have everything
    need to actually set it up, hence explicitly say "ready to use" in
    the name.

No change in behaviour. Just a bit of renaming.

2 years agoid128: clarify that the "well-known" IDs are about GPT partition types
Lennart Poettering [Fri, 10 Sep 2021 08:32:25 +0000 (10:32 +0200)] 
id128: clarify that the "well-known" IDs are about GPT partition types

At least for now they are all GPT partition types, and we should mention
that.

2 years agonetwork: drop unused "after_configure" feature for nexthops, neighbors, and routing... 20699/head
Yu Watanabe [Thu, 15 Jul 2021 04:21:59 +0000 (13:21 +0900)] 
network: drop unused "after_configure" feature for nexthops, neighbors, and routing policy rules

2 years agonetwork: do not try to drop addresses or routes of unmanaged interfaces on carrier...
Yu Watanabe [Sun, 5 Sep 2021 08:14:36 +0000 (17:14 +0900)] 
network: do not try to drop addresses or routes of unmanaged interfaces on carrier lost

Currently, link_stop_engines(), link_drop_config(), and link_drop_foreign_config()
do nothing when the interface is unmanaged. So this does not change anything.
But returning earlier should be clear and safer for protecting configs
on unmanaged interfaces.

2 years agonetwork: introduce route_by_kernel() helper function 20702/head
Yu Watanabe [Wed, 8 Sep 2021 06:26:27 +0000 (15:26 +0900)] 
network: introduce route_by_kernel() helper function

And drop "FIXME" from comment, as there is nothing we need to fix.

2 years agonetwork: introduce ipv4acd_set_ifname()
Yu Watanabe [Wed, 8 Sep 2021 05:08:13 +0000 (14:08 +0900)] 
network: introduce ipv4acd_set_ifname()

2 years agonetwork: use sd_netlink_message_read_string_strdup()
Yu Watanabe [Thu, 15 Jul 2021 04:20:04 +0000 (13:20 +0900)] 
network: use sd_netlink_message_read_string_strdup()

2 years agosd-boot: Support installing new devicetree
Emil Renner Berthing [Sat, 24 Apr 2021 23:38:28 +0000 (23:38 +0000)] 
sd-boot: Support installing new devicetree

The Bootloader Specification says "devicetree refers to the binary
device tree to use when executing the kernel..", but systemd-boot
didn't actually do anything when encountering this stanza until now.

Add support for loading, applying fixups if relevant, and installing the
new device tree before executing the kernel.

2 years agobasic/linux: Sync if_arp.h with Linux 5.14
Chris Packham [Thu, 9 Sep 2021 21:51:36 +0000 (09:51 +1200)] 
basic/linux: Sync if_arp.h with Linux 5.14

ARPHRD_MCTP was added in 5.14. Sync if_arp.h to pick up the definition

Fixes #20694

2 years agoshared: Extract common LogControl CLI code to verb-log-control.h
Daan De Meyer [Tue, 7 Sep 2021 12:35:49 +0000 (13:35 +0100)] 
shared: Extract common LogControl CLI code to verb-log-control.h

Let's reduce duplication by sharing common logic between all
log-target/log-level verbs.

2 years agoMerge pull request #20693 from mcatanzaro/mcatanzaro/nss-buffers
Yu Watanabe [Thu, 9 Sep 2021 23:43:32 +0000 (08:43 +0900)] 
Merge pull request #20693 from mcatanzaro/mcatanzaro/nss-buffers

nss-systemd: ensure returned strings point into provided buffer

2 years agonss-systemd: ensure returned strings point into provided buffer 20693/head
Michael Catanzaro [Wed, 8 Sep 2021 21:51:16 +0000 (16:51 -0500)] 
nss-systemd: ensure returned strings point into provided buffer

Jamie Bainbridge found an issue where glib's g_get_user_database_entry()
may crash after doing:

```
error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw);
// ...
pw->pw_name[0] = g_ascii_toupper (pw->pw_name[0]);
```

in order to uppercase the first letter of the user's real name. This is
a glib bug, because there is a different codepath that gets the pwd from
vanilla getpwnam instead of getpwnam_r as shown here. When the pwd
struct is returned by getpwnam, its fields point to static data owned by
glibc/NSS, and so it must not be modified by the caller. After much
debugging, Jamie Bainbridge has fixed this in https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2244
by making a copy of the data before modifying it, and that resolves all
problems for glib. Yay!

However, glib is crashing even when getpwnam_r is used instead of
getpwnam! According to getpwnam_r(3), the strings in the pwd struct are
supposed to be pointers into the buffer passed by the caller, so glib
should be able to safely edit it directly in this case, so long as it
doesn't try to increase the size of any of the strings.

Problem is various functions throughout nss-systemd.c return synthesized
records declared at the top of the file. These records are returned
directly and so contain pointers to static strings owned by
libsystemd-nss. systemd must instead copy all the strings into the
provided buffer.

This crash is reproducible if nss-systemd is listed first on the passwd
line in /etc/nsswitch.conf, and the application looks up one of the
synthesized user accounts "root" or "nobody", and finally the
application attempts to edit one of the strings in the returned struct.
All our synthesized records for the other struct types have the same
problem, so this commit fixes them all at once.

Fixes #20679

2 years agocryptsetup-tokens: fix typo in tpm2 token dump output
Anssi Hannula [Thu, 9 Sep 2021 11:58:13 +0000 (14:58 +0300)] 
cryptsetup-tokens: fix typo in tpm2 token dump output

cryptsetup_token_dump() gets called when the user calls
"cryptsetup luksDump"  for a volume and it prints the token-specific
data.

The tpm2 cryptsetup_token_dump() function misspells tpm2 as tmp2 on two
lines of its output.

Fix that.

2 years agoMerge pull request #20681 from weblate/weblate-systemd-master
Zbigniew Jędrzejewski-Szmek [Thu, 9 Sep 2021 07:20:00 +0000 (09:20 +0200)] 
Merge pull request #20681 from weblate/weblate-systemd-master

Translations update from Weblate

2 years agopo: Translated using Weblate (Finnish) 20681/head
Jan Kuparinen [Thu, 9 Sep 2021 03:04:59 +0000 (05:04 +0200)] 
po: Translated using Weblate (Finnish)

Currently translated at 64.5% (122 of 189 strings)

Co-authored-by: Jan Kuparinen <copper_fin@hotmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/fi/
Translation: systemd/main

2 years agopo: Translated using Weblate (Japanese)
Takuro Onoue [Thu, 9 Sep 2021 03:04:59 +0000 (05:04 +0200)] 
po: Translated using Weblate (Japanese)

Currently translated at 100.0% (189 of 189 strings)

Co-authored-by: Takuro Onoue <kusanaginoturugi@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/ja/
Translation: systemd/main

2 years agopo: Translated using Weblate (Indonesian)
Andika Triwidada [Thu, 9 Sep 2021 03:04:58 +0000 (05:04 +0200)] 
po: Translated using Weblate (Indonesian)

Currently translated at 90.4% (171 of 189 strings)

Co-authored-by: Andika Triwidada <andika@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/id/
Translation: systemd/main

2 years agonss-systemd: pack pw_passwd result into supplied buffer
Michael Catanzaro [Wed, 8 Sep 2021 18:42:16 +0000 (13:42 -0500)] 
nss-systemd: pack pw_passwd result into supplied buffer

getpwnam_r() guarantees that the strings in the struct passwd that it
returns are pointers into the buffer allocated by the application and
passed to getpwnam_r(). This means applications may choose to modify the
strings in place, as long as the length of the strings is not increased.
So it's wrong for us to return a static string here, we really do have
to copy it into the application-provided buffer like we do for all the
other strings.

This is only a theoretical problem since it would be very weird for an
application to modify the pw_passwd field, but I spotted this when
investigating a similar crash caused by glib editing a different field.
See also:

https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2244

2 years agoanalyze: ignore dependencies with security --offline
Luca Boccassi [Wed, 8 Sep 2021 14:15:00 +0000 (15:15 +0100)] 
analyze: ignore dependencies with security --offline

We don't care about validating dependencies here, the security verb is
only checking the unit(s) under test.

2 years agosd-event: take ref on event loop object before dispatching event sources
Michal Sekletar [Wed, 8 Sep 2021 13:42:11 +0000 (15:42 +0200)] 
sd-event: take ref on event loop object before dispatching event sources

Idea is that all public APIs should take reference on objects that get
exposed to user-provided callbacks. We take the reference as a
protection from callbacks dropping it. We used to do this also here in
sd_event_loop(). However, in cleanup portion of f814c871e6 this was
accidentally dropped.

2 years agocore: fix free undefined pointer when strdup failed in the first loop
xujing [Wed, 8 Sep 2021 06:26:20 +0000 (14:26 +0800)] 
core: fix free undefined pointer when strdup failed in the first loop

2 years agotest: rename `dracut_install` to `image_install`
Frantisek Sumsal [Wed, 8 Sep 2021 11:33:34 +0000 (13:33 +0200)] 
test: rename `dracut_install` to `image_install`

The `dracut_install` is a misnomer, since the systemd integration test
suite is based on the original dracut's test suite, and not all the
references to dracut has been edited out. Let's fix that.

2 years agoexplicitly close FIDO2 devices
pedro martelletto [Wed, 8 Sep 2021 08:42:56 +0000 (10:42 +0200)] 
explicitly close FIDO2 devices

FIDO2 device access is serialised by libfido2 using flock().
Therefore, make sure to close a FIDO2 device once we are done
with it, or we risk opening it again at a later point and
deadlocking. Fixes #20664.

2 years agoMerge pull request #20667 from keszybz/portable-docs
Luca Boccassi [Wed, 8 Sep 2021 12:41:44 +0000 (13:41 +0100)] 
Merge pull request #20667 from keszybz/portable-docs

Tweaks to documentation about portable services

2 years agodocs: polish the text about Portable Services a bit 20667/head
Zbigniew Jędrzejewski-Szmek [Tue, 7 Sep 2021 17:14:19 +0000 (19:14 +0200)] 
docs: polish the text about Portable Services a bit

No semantic changes, just removal of repetitions and unnecessary words, and
some more formatting.