]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
6 months agoMerge pull request #28891 from poettering/pcrlock
Luca Boccassi [Fri, 3 Nov 2023 16:07:43 +0000 (16:07 +0000)] 
Merge pull request #28891 from poettering/pcrlock

new pcrlock tool for generating signed PCR policies for PCR 0, 1, 4, …

6 months agobsod: restore vt on SIGTERM/SIGINT
Frantisek Sumsal [Fri, 3 Nov 2023 10:05:30 +0000 (11:05 +0100)] 
bsod: restore vt on SIGTERM/SIGINT

Let's install a simple no-op signal handler without SA_RESTART for
SIGINT/SIGTERM, which allows us to interrupt read_one_char() and follow
it up with a proper cleanup, including restoring the vt to the original
state.

Resolves: #29478

6 months agovirt: also check if PID1 is in chroot
Yu Watanabe [Fri, 3 Nov 2023 05:29:59 +0000 (14:29 +0900)] 
virt: also check if PID1 is in chroot

In PID1, running_in_chroot() is called by safety_checks(), but without
this change, the check did nothing.

6 months agonspawn: allow disabling os-release check
Frantisek Sumsal [Fri, 3 Nov 2023 08:17:48 +0000 (09:17 +0100)] 
nspawn: allow disabling os-release check

Introduce a new env variable $SYSTEMD_NSPAWN_CHECK_OS_RELEASE, that can
be used to disable the os-release check for bootable OS trees. Useful
when trying to boot a container with empty /etc/ and bind-mounted /usr/.

Resolves: #29185

6 months agoMerge pull request #29508 from CodethinkLabs/systemd-vmspawn-pr
Luca Boccassi [Fri, 3 Nov 2023 16:04:38 +0000 (16:04 +0000)] 
Merge pull request #29508 from CodethinkLabs/systemd-vmspawn-pr

systemd-vmspawn implementation that only supports disk images

6 months agoMerge pull request #29840 from poettering/cryptsetup-tweaks-nore
Lennart Poettering [Fri, 3 Nov 2023 13:40:15 +0000 (14:40 +0100)] 
Merge pull request #29840 from poettering/cryptsetup-tweaks-nore

two cryptsetup bugfixes and some clean-ups

6 months agonspawn: fix two failure paths
Lennart Poettering [Fri, 3 Nov 2023 08:42:53 +0000 (09:42 +0100)] 
nspawn: fix two failure paths

We need to go to "finish" rather than just return.

All our exit paths got this right, except two.

6 months agoMerge pull request #29836 from poettering/libiptc-dlopen
Yu Watanabe [Fri, 3 Nov 2023 12:15:29 +0000 (21:15 +0900)] 
Merge pull request #29836 from poettering/libiptc-dlopen

make libiptc dep a dlopen() one

6 months agoupdate TODO
Lennart Poettering [Fri, 3 Nov 2023 11:14:38 +0000 (12:14 +0100)] 
update TODO

6 months agoMerge pull request #29827 from yuwata/network-install-default-configs
Lennart Poettering [Fri, 3 Nov 2023 10:37:04 +0000 (11:37 +0100)] 
Merge pull request #29827 from yuwata/network-install-default-configs

network: add meson option to install default configs

6 months agoupdate TODO 28891/head
Lennart Poettering [Mon, 23 Oct 2023 08:27:14 +0000 (10:27 +0200)] 
update TODO

6 months agotest: add pcrlock integration test
Lennart Poettering [Thu, 26 Oct 2023 11:52:06 +0000 (13:52 +0200)] 
test: add pcrlock integration test

(Contains various test additions added by @mrc0mmand)

6 months agoman: document pcrlock
Lennart Poettering [Wed, 25 Oct 2023 11:51:34 +0000 (13:51 +0200)] 
man: document pcrlock

6 months agounits: add units that put together and install a TPM2 PCR policy at boot
Lennart Poettering [Mon, 23 Oct 2023 10:02:53 +0000 (12:02 +0200)] 
units: add units that put together and install a TPM2 PCR policy at boot

(This is disabled by default, for now)

6 months agopcrlock: add pre-defined pcrlock files
Lennart Poettering [Wed, 16 Aug 2023 09:40:01 +0000 (11:40 +0200)] 
pcrlock: add pre-defined pcrlock files

These cover well-known measurements done by the UEFI firmware or
systemd.

6 months agotree-wide: hook everything up with pcrlock policy
Lennart Poettering [Tue, 24 Oct 2023 20:30:47 +0000 (22:30 +0200)] 
tree-wide: hook everything up with pcrlock policy

Make sure cryptenroll and repart can enroll TPM2 policies with pcrlock
logic.

Make sure cryptsetup can unlock TPM2 policies with pcrlock in effect.

6 months agopcrlock: add new pcrlock tool
Lennart Poettering [Wed, 16 Aug 2023 09:39:23 +0000 (11:39 +0200)] 
pcrlock: add new pcrlock tool

6 months agotpm2-util: add common array for TPM2 hash algorithms
Lennart Poettering [Mon, 23 Oct 2023 20:36:09 +0000 (22:36 +0200)] 
tpm2-util: add common array for TPM2 hash algorithms

This is useful to enumerate all hash algorithms we want to predict
measurements for.

6 months agotpm2-util: make various marshalling/unmarshalling calls static, as we only use them...
Lennart Poettering [Sat, 21 Oct 2023 14:34:28 +0000 (16:34 +0200)] 
tpm2-util: make various marshalling/unmarshalling calls static, as we only use them internally in tpm2-util.c

Note, some of these were just added in this same PR. We only exported
them initially to make sure gcc doesn't complained about unused local
symbols.

6 months agotpm2-util: add generic helpers for sealing/unsealing data
Lennart Poettering [Mon, 23 Oct 2023 08:30:25 +0000 (10:30 +0200)] 
tpm2-util: add generic helpers for sealing/unsealing data

These helpers tpm2_seal_data()/tpm2_unseal_data() are useful for
sealing/unsealing data without any further semantics around them. This
is different from the existing tpm2_seal()/tpm2_unseal() which seal with
a specific policy and serialize in a specific way, as we use it for disk
encryption.

These new helpers are more generic, they do not serialize in a specific
way or imply policy, they are just the core of the sealing/unsealing.

(We should look into porting tpm2_seal()/tpm2_unseal() onto these new
helpers, but this isn#t trivial, since the classic serialization we use
uses a merged marshalling of private/public key, which we'd have to
change in one way or another)

6 months agotpm2-util: add helper for creating/removing/updating NV index with stored policy
Lennart Poettering [Mon, 23 Oct 2023 08:28:59 +0000 (10:28 +0200)] 
tpm2-util: add helper for creating/removing/updating NV index with stored policy

This is the primary core of what pcrlock is supposed to do eventually:
maintain a TPM2 policy hash inside an NV index which we then can
reference via a PolicyAuthorizeNV expression to lock other objects
against it.

6 months agotpm2-util: add calls for calculating/submitting PolicyAuthorizeNV + PolicyOR TPM2...
Lennart Poettering [Thu, 19 Oct 2023 15:54:48 +0000 (17:54 +0200)] 
tpm2-util: add calls for calculating/submitting PolicyAuthorizeNV + PolicyOR TPM2 policies

6 months agotpm2-util: add helper that calculates name of NV index
Lennart Poettering [Thu, 19 Oct 2023 15:53:50 +0000 (17:53 +0200)] 
tpm2-util: add helper that calculates name of NV index

6 months agotpm2-util: add helper for setting TPM2B_AUTH in binary
Lennart Poettering [Thu, 19 Oct 2023 15:51:26 +0000 (17:51 +0200)] 
tpm2-util: add helper for setting TPM2B_AUTH in binary

6 months agotpm2-util: add helpers for marshalling NV index public areas
Lennart Poettering [Wed, 25 Oct 2023 08:55:51 +0000 (10:55 +0200)] 
tpm2-util: add helpers for marshalling NV index public areas

6 months agotpm2-util: add helpers for marshalling public/private keys
Lennart Poettering [Thu, 19 Oct 2023 15:50:39 +0000 (17:50 +0200)] 
tpm2-util: add helpers for marshalling public/private keys

Note: we export these new symbols for now. A later commit in this PR
will make them static again. The only reason they are exported here is
to make sure gcc doesn't complain about unused static symbols, and I
really wanted to commit them in a separate commit.

6 months agotpm2-util: export a couple of functions we'd like to use for pcrlock
Lennart Poettering [Thu, 19 Oct 2023 15:48:00 +0000 (17:48 +0200)] 
tpm2-util: export a couple of functions we'd like to use for pcrlock

6 months agotpm2-util: pick up a few new symbols from tpm2-tss
Lennart Poettering [Thu, 19 Oct 2023 15:44:48 +0000 (17:44 +0200)] 
tpm2-util: pick up a few new symbols from tpm2-tss

6 months agotpm2-util: add helper for returning path to EFI event log blob
Lennart Poettering [Thu, 31 Aug 2023 09:15:09 +0000 (11:15 +0200)] 
tpm2-util: add helper for returning path to EFI event log blob

6 months agotpm2-util: add various uefi event log definitions
Lennart Poettering [Thu, 13 Jul 2023 07:49:32 +0000 (09:49 +0200)] 
tpm2-util: add various uefi event log definitions

6 months agoefivars: add UEFI 'database' variable uuid
Lennart Poettering [Mon, 14 Aug 2023 11:18:18 +0000 (13:18 +0200)] 
efivars: add UEFI 'database' variable uuid

6 months agoman: mention DHCPv4 Router option is ignored when Classless Static Routes option...
Yu Watanabe [Fri, 3 Nov 2023 06:45:52 +0000 (15:45 +0900)] 
man: mention DHCPv4 Router option is ignored when Classless Static Routes option is received

For #29564.

6 months agocryptsetup: pass AskPasswordFlags down into pkcs11 module 29840/head
Lennart Poettering [Thu, 2 Nov 2023 21:32:36 +0000 (22:32 +0100)] 
cryptsetup: pass AskPasswordFlags down into pkcs11 module

The pkcs11 cryptsetup token module is a bit different from the tpm2 +
fido2 ones: it asks for the PIN itself, rather than bubbling up a
request to get a PIN. That's because it might need multiple, and because
we don't want to destroy a the pkcs11 session half-way and thus risk
increasing pin counters.

Hence, we sometimes ask for PINs from our code, rather than let the
libcryptsetup caller do that. So far we didn't pass the AskPasswordFlags
field down into the module though. Fix that.

Fixes: #28665
6 months agoupdate TODO 29836/head
Lennart Poettering [Thu, 2 Nov 2023 15:03:05 +0000 (16:03 +0100)] 
update TODO

6 months agofirewall: allow selecting firewall backend via env var
Lennart Poettering [Thu, 2 Nov 2023 14:58:50 +0000 (15:58 +0100)] 
firewall: allow selecting firewall backend via env var

6 months agofirewall: make sure firewall-util-private.h includes everythin it needs
Lennart Poettering [Thu, 2 Nov 2023 14:58:29 +0000 (15:58 +0100)] 
firewall: make sure firewall-util-private.h includes everythin it needs

6 months agofirewall: make libiptc dependency a dlopen() one
Lennart Poettering [Thu, 2 Nov 2023 14:57:10 +0000 (15:57 +0100)] 
firewall: make libiptc dependency a dlopen() one

6 months agodlfcn-util: add two new macros for making it easier to create "sym_xyz" indirect...
Lennart Poettering [Thu, 2 Nov 2023 14:53:40 +0000 (15:53 +0100)] 
dlfcn-util: add two new macros for making it easier to create "sym_xyz" indirect function call variables

Let's use "typeof" to make it easier to generate "sym_xyz" wrappers of
functions exposed by libraries.

6 months agoUpdate NEWS 29827/head
Yu Watanabe [Fri, 3 Nov 2023 02:53:50 +0000 (11:53 +0900)] 
Update NEWS

6 months agomeson: /etc/systemd/network is also used by udevd
Yu Watanabe [Thu, 2 Nov 2023 05:20:11 +0000 (14:20 +0900)] 
meson: /etc/systemd/network is also used by udevd

6 months agonetwork: add meson option to rename .example files on install
Yu Watanabe [Thu, 2 Nov 2023 05:12:42 +0000 (14:12 +0900)] 
network: add meson option to rename .example files on install

Also this renames 80-ethernet.network.example -> 89-ethernet.network.example,
to make it have lower precedence over other default .network files for
Ethernet interfaces.

Closes #29765.

6 months agoman: mention that network files should be prefixed with number smaller than 70
Yu Watanabe [Thu, 2 Nov 2023 05:18:16 +0000 (14:18 +0900)] 
man: mention that network files should be prefixed with number smaller than 70

6 months agonetwork: make generated configs have higher precedence over default configs
Yu Watanabe [Thu, 2 Nov 2023 04:41:30 +0000 (13:41 +0900)] 
network: make generated configs have higher precedence over default configs

We use 80- for default .network files. So, the generated files from the
kernel command line should have smaller prefix.

6 months agonetwork: disable IPv6AcceptRA= in several default config
Yu Watanabe [Thu, 2 Nov 2023 04:29:45 +0000 (13:29 +0900)] 
network: disable IPv6AcceptRA= in several default config

Also,
- drop DHCP=no, as it is the default setting,
- enable IPv6SendRA= for wifi access point,
- enable MulticastDNS= for wifi adhoc mode.

6 months agomeson: install newly added example .network file
Yu Watanabe [Thu, 2 Nov 2023 04:18:45 +0000 (13:18 +0900)] 
meson: install newly added example .network file

Follow-up for e6ba085398866ab05511fe748b8e9f7cbe85148e.

6 months agocryptsetup: disable activation via token plugin if we shall measure the volume key
Lennart Poettering [Thu, 2 Nov 2023 16:58:29 +0000 (17:58 +0100)] 
cryptsetup: disable activation via token plugin if we shall measure the volume key

if we allow cryptsetup to activate a volume via token plugin we never
get access to the volume key, which we'd like to measure. Hence disable
token plugins in that case.

(I tempted to say we probably should disable them entirely, and only use
them if classic cryptsetup is used, but that's a discussion for another
day.)

Fixes: #29790
6 months agocryptsetup: honour configured ask password flags also when activating via token
Lennart Poettering [Thu, 2 Nov 2023 16:56:47 +0000 (17:56 +0100)] 
cryptsetup: honour configured ask password flags also when activating via token

See: #28665 (this is not a fix for that PR though)

6 months agocryptsetup: rename usrptr to userdata
Lennart Poettering [Thu, 2 Nov 2023 16:56:16 +0000 (17:56 +0100)] 
cryptsetup: rename usrptr to userdata

Across our codebase we call the generic pointer "userdata", not
"userptr". Do so here too.

6 months agovarlink: limit the maximum nesting depth
Frantisek Sumsal [Thu, 2 Nov 2023 17:55:50 +0000 (18:55 +0100)] 
varlink: limit the maximum nesting depth

Let's limit the maximum nesting depth for structure definitions to 64 to
avoid stack overflows with very deep definitions.

Resolves: #29589

6 months agoMerge pull request #29792 from poettering/resolved-monitor-packet
Luca Boccassi [Thu, 2 Nov 2023 20:43:19 +0000 (20:43 +0000)] 
Merge pull request #29792 from poettering/resolved-monitor-packet

resolved: make sure "resolvectl monitor" can properly deal with stub …

6 months agocrytsetup: allow overriding the token .so library path via an env var
Lennart Poettering [Mon, 30 Oct 2023 21:26:09 +0000 (22:26 +0100)] 
crytsetup: allow overriding the token .so library path via an env var

I tried to get something similar upstream:

https://gitlab.com/cryptsetup/cryptsetup/-/issues/846

But no luck, it was suggested I use ELF interposition instead. Hence,
let's do so (but not via ugly LD_PRELOAD, but simply by overriding the
relevant symbol natively in our own code).

This makes debugging tokens a ton easier.

6 months agomeson: make sure we never actually link to libxenctrl
Lennart Poettering [Thu, 2 Nov 2023 14:57:34 +0000 (15:57 +0100)] 
meson: make sure we never actually link to libxenctrl

We don't make use of any of its symbols, we just want the headers, hence
make sure we never try to link against it.

6 months agotree-wide: never link directly against p11kit
Lennart Poettering [Thu, 2 Nov 2023 13:47:35 +0000 (14:47 +0100)] 
tree-wide: never link directly against p11kit

We go via dlopen() at most places, but forgot some. Cover the missing
cases too.

6 months agoMerge pull request #29748 from poettering/tgtmode
Luca Boccassi [Thu, 2 Nov 2023 17:26:05 +0000 (17:26 +0000)] 
Merge pull request #29748 from poettering/tgtmode

Storage target mode, inspired by "target disk mode" á la MacOS, but with NVMe-TCP

6 months agotest: check that `resolvectl monitor --json` generates valid JSON 29792/head
Frantisek Sumsal [Thu, 2 Nov 2023 17:08:30 +0000 (18:08 +0100)] 
test: check that `resolvectl monitor --json` generates valid JSON

Provides coverage for #29580.

6 months agovmspawn: created man page 29508/head
Sam Leonard [Thu, 12 Oct 2023 12:20:29 +0000 (13:20 +0100)] 
vmspawn: created man page

6 months agovmspawn: added initial code for vmspawn
Sam Leonard [Thu, 12 Oct 2023 12:13:19 +0000 (13:13 +0100)] 
vmspawn: added initial code for vmspawn

vmspawn-settings.c is currently empty but this will be used in future to
house code for parsing settings from a file

6 months agostring-util: add on_off
Sam Leonard [Thu, 2 Nov 2023 11:43:05 +0000 (11:43 +0000)] 
string-util: add on_off

6 months agonspawn: moved nspawn-creds.[ch] to shared/machine-credential.[ch]
Sam Leonard [Thu, 12 Oct 2023 11:56:08 +0000 (12:56 +0100)] 
nspawn: moved nspawn-creds.[ch] to shared/machine-credential.[ch]

This was done in order to allow sharing of this code between
systemd-nspawn and systemd-vmspawn.

6 months agomount-util: call CLEANUP_ARRAY after allocating array
Luca Boccassi [Thu, 2 Nov 2023 09:34:18 +0000 (09:34 +0000)] 
mount-util: call CLEANUP_ARRAY after allocating array

Coverity gets confused if it is called before.

CID#1523757

6 months agoupdate TODO 29748/head
Lennart Poettering [Mon, 30 Oct 2023 11:28:57 +0000 (12:28 +0100)] 
update TODO

6 months agoupdate NEWS
Lennart Poettering [Thu, 2 Nov 2023 10:35:39 +0000 (11:35 +0100)] 
update NEWS

6 months agotest: add integration test for systemd-storagetm
Lennart Poettering [Wed, 1 Nov 2023 18:17:02 +0000 (19:17 +0100)] 
test: add integration test for systemd-storagetm

6 months agoman: add docs for new storagetm service
Lennart Poettering [Mon, 30 Oct 2023 11:12:59 +0000 (12:12 +0100)] 
man: add docs for new storagetm service

6 months agostoragetm: add new systemd-storagetm component
Lennart Poettering [Fri, 27 Oct 2023 12:25:49 +0000 (14:25 +0200)] 
storagetm: add new systemd-storagetm component

This implements a "storage target mode", similar to what MacOS provides
since a long time as "Target Disk Mode":

        https://en.wikipedia.org/wiki/Target_Disk_Mode

This implementation is relatively simple:

1. a new generic target "storage-target-mode.target" is added, which
   when booted into defines the target mode.

2. a small tool and service "systemd-storagetm.service" is added which
   exposes a specific device or all devices as NVMe-TCP devices over the
   network.  NVMe-TCP appears to be hot shit right now how to expose
   block devices over the network. And it's really simple to set up via
   configs, hence our code is relatively short and neat.

The idea is that systemd-storagetm.target can be extended sooner or
later, for example to expose block devices also as USB mass storage
devices and similar, in case the system has "dual mode" USB controller
that can also work as device, not just as host. (And people could also
plug in sharing as NBD, iSCSI, whatever they want.)

How to use this? Boot into your system with a kernel cmdline of
"rd.systemd.unit=storage-target-mode.target ip=link-local", and you'll see on
screen the precise "nvme connect" command line to make the relevant
block devices available locally on some other machine. This all requires
that the target mode stuff is included in the initrd of course. And the
system will the stay in the initrd forever.

Why bother? Primarily three use-cases:

1. Debug a broken system: with very few dependencies during boot get
   access to the raw block device of a broken machine.

2. Migrate from system to another system, by dd'ing the old to the new
   directly.

3. Installing an OS remotely on some device (for example via Thunderbolt
   networking)

(And there might be more, for example the ability to boot from a
laptop's disk on another system)

Limitations:

1. There's no authentication/encryption. Hence: use this on local links
   only.

2. NVMe target mode on Linux supports r/w operation only. Ideally, we'd
   have a read-only mode, for security reasons, and default to it.

Future love:

1. We should have another mode, where we simply expose the homed LUKS
   home dirs like that.

2. Some lightweight hookup with plymouth, to display a (shortened)
   version of the info we write to the console.

To test all this, just run:

    mkosi --kernel-command-line-extra="rd.systemd.unit=storage-target-mode.target" qemu

6 months agoglyph-util: add computer disk + world emoji
Lennart Poettering [Mon, 30 Oct 2023 08:48:44 +0000 (09:48 +0100)] 
glyph-util: add computer disk + world emoji

6 months agosd-netlink: add call to query sd_event object an sd_netlink object is attached to
Lennart Poettering [Fri, 27 Oct 2023 21:16:06 +0000 (23:16 +0200)] 
sd-netlink: add call to query sd_event object an sd_netlink object is attached to

This mimics a similar call sd_bus_get_event() that already exists for
sd-bus.

6 months agoblockdev-util: export block_device_get_originating()
Lennart Poettering [Fri, 27 Oct 2023 16:16:19 +0000 (18:16 +0200)] 
blockdev-util: export block_device_get_originating()

6 months agoudevadm-lock: switch things over to lock_generic_with_timeout()
Lennart Poettering [Thu, 2 Nov 2023 10:08:29 +0000 (11:08 +0100)] 
udevadm-lock: switch things over to lock_generic_with_timeout()

This replaces the local implementation of a timeout file lock with our
new generic one.

Note that a comment in the old code claimed we couldn't use alarm()-like timeouts,
but htat's not entirely true: we can if we use SIGKILL, and thus know
for sure that the process will be dead in case the timer is hit before
we actually enter the file lock syscall. But we also know it will be
delivered if we hit after.

6 months agolock-util: add a new lock_generic_with_timeout() helper
Lennart Poettering [Thu, 2 Nov 2023 10:07:14 +0000 (11:07 +0100)] 
lock-util: add a new lock_generic_with_timeout() helper

This is just like lock_generic(), but applies the lock with a timeout.
This requires jumping through some hoops by executing things in a child
process, so that we can abort if necessary via a timer. Linux after all
has no native way to take file locks with a timeout.

6 months agoprocess-util: add new FORK_DEATHSIG_SIGKILL flag, rename FORK_DEATHSIG → FORK_DEATHSI...
Lennart Poettering [Thu, 2 Nov 2023 10:04:36 +0000 (11:04 +0100)] 
process-util: add new FORK_DEATHSIG_SIGKILL flag, rename FORK_DEATHSIG → FORK_DEATHSIG_SIGTERM

Sometimes it makes sense to hard kill a client if we die. Let's hence
add a third FORK_DEATHSIG flag for this purpose: FORK_DEATHSIG_SIGKILL.

To make things less confusing this also renames FORK_DEATHSIG to
FORK_DEATHSIG_SIGTERM to make clear it sends SIGTERM. We already had
FORK_DEATHSIG_SIGINT, hence this makes things nicely symmetric.

A bunch of users are switched over for FORK_DEATHSIG_SIGKILL where we
know it's safe to abort things abruptly. This should make some kernel
cases more robust, since we cannot get confused by signal masks or such.

While we are at it, also fix a bunch of bugs where we didn't take
FORK_DEATHSIG_SIGINT into account in safe_fork()

6 months agofd-util: add new FORMAT_PROC_PID_FD_PATH() helper
Lennart Poettering [Thu, 2 Nov 2023 10:31:13 +0000 (11:31 +0100)] 
fd-util: add new FORMAT_PROC_PID_FD_PATH() helper

This is just like FORMAT_PROC_FD_PATH() but goes via the PID number
rather than the "self" symlink.

This is useful whenever we want to generate a path that is useful
outside of our local scope.

6 months agomkosi: explicitly disable KVM in GHA runs
Luca Boccassi [Thu, 2 Nov 2023 11:01:23 +0000 (11:01 +0000)] 
mkosi: explicitly disable KVM in GHA runs

mkosi detects whether /dev/kvm is available and uses it if it is. But
some GHA hosts have it, but it's broken and not supported, so we need
to explicitly disable it.

6 months agoNEWS: several updates for networking
Yu Watanabe [Thu, 2 Nov 2023 06:36:29 +0000 (15:36 +0900)] 
NEWS: several updates for networking

6 months agovarlink,json: introduce new varlink_dispatch() helper
Lennart Poettering [Wed, 1 Nov 2023 17:36:12 +0000 (18:36 +0100)] 
varlink,json: introduce new varlink_dispatch() helper

varlink_dispatch() is a simple wrapper around json_dispatch() that
returns clean, standards-compliant InvalidParameter error back to
clients, if the specified JSON cannot be parsed properly.

For this json_dispatch() is extended to return the offending field's
name. Because it already has quite a few parameters, I then renamed
json_dispatch() to json_dispatch_full() and made json_dispatch() a
wrapper around it that passes the new argument as NULL. While doing so I
figured we should also get rid of the bad= argument in the short
wrapper, since it's only used in the OCI code.

To simplify the OCI code this adds a second wrapper oci_dispatch()
around json_dispatch_full(), that fills in bad= the way we want.

Net result: instead of one json_dispatch() call there are now:

1. json_dispatch_full() for the fully feature mother of all dispathers.
2. json_dispatch() for the simpler version that you want to use most of
   the time.
3. varlink_dispatch() that generates nice Varlink errors
4. oci_dispatch() that does the OCI specific error handling

And that's all there is.

6 months agofuzz: limit the size of the input
Frantisek Sumsal [Wed, 1 Nov 2023 19:18:28 +0000 (20:18 +0100)] 
fuzz: limit the size of the input

To avoid timeouts in oss-fuzz. The timeout reported in #29736 happened
with a ~500K test case, so with a conservative 128K limit we should
still be well within a range for any reasonable-ish generated input to
get through, while avoiding timeouts.

Resolves: #29736

6 months agoresolved: make sure "resolvectl monitor" can properly deal with stub queries
Lennart Poettering [Tue, 31 Oct 2023 22:00:41 +0000 (23:00 +0100)] 
resolved: make sure "resolvectl monitor" can properly deal with stub queries

If we receive a query via the two stubs we store the original packet
instead of just the question object. Hence when we send monitor info to
subscribed clients we need to extract its question and also include it
in the returned data.

Fixes: #29580
6 months agoNEWS: more typo fixes
Joerg Behrmann [Wed, 1 Nov 2023 20:32:22 +0000 (21:32 +0100)] 
NEWS: more typo fixes

6 months agoMerge pull request #29816 from bluca/rel
Luca Boccassi [Wed, 1 Nov 2023 20:14:11 +0000 (20:14 +0000)] 
Merge pull request #29816 from bluca/rel

Busywork for RC1

6 months agoNEWS: fix a couple of typos and inconsistencies
Frantisek Sumsal [Wed, 1 Nov 2023 20:00:10 +0000 (21:00 +0100)] 
NEWS: fix a couple of typos and inconsistencies

And drop one duplicated paragraph.

6 months agoMerge pull request #29817 from YHNdnzj/fchmodat2
Yu Watanabe [Wed, 1 Nov 2023 19:56:29 +0000 (04:56 +0900)] 
Merge pull request #29817 from YHNdnzj/fchmodat2

Add support for fchmodat2 and use it where appropriate

6 months agoparse-util: add parse_tristate() and use it everywhere
Lennart Poettering [Wed, 1 Nov 2023 15:48:42 +0000 (16:48 +0100)] 
parse-util: add parse_tristate() and use it everywhere

We parse tristates all the time, let's add an explicit parser for them.

6 months agobuild(deps): bump meson from 1.2.2 to 1.2.3 in /.github/workflows
dependabot[bot] [Wed, 1 Nov 2023 17:31:14 +0000 (17:31 +0000)] 
build(deps): bump meson from 1.2.2 to 1.2.3 in /.github/workflows

Bumps [meson](https://github.com/mesonbuild/meson) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/1.2.2...1.2.3)

---
updated-dependencies:
- dependency-name: meson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
6 months agobuild(deps): bump ninja from 1.11.1 to 1.11.1.1 in /.github/workflows
dependabot[bot] [Wed, 1 Nov 2023 09:38:48 +0000 (09:38 +0000)] 
build(deps): bump ninja from 1.11.1 to 1.11.1.1 in /.github/workflows

Bumps [ninja](https://github.com/ninja-build/ninja) from 1.11.1 to 1.11.1.1.
- [Release notes](https://github.com/ninja-build/ninja/releases)
- [Commits](https://github.com/ninja-build/ninja/commits)

---
updated-dependencies:
- dependency-name: ninja
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
6 months agosort-util: make bsearch_safe() actually typesafe, by returning the right type
Lennart Poettering [Wed, 1 Nov 2023 13:37:05 +0000 (14:37 +0100)] 
sort-util: make bsearch_safe() actually typesafe, by returning the right type

6 months agonspawn-patch-uid: try fchmodat2() to restore mode of symlink 29817/head
Arseny Maslennikov [Sat, 21 Oct 2023 08:00:00 +0000 (11:00 +0300)] 
nspawn-patch-uid: try fchmodat2() to restore mode of symlink

Prior to this commit, if the target had been a symlink, we did nothing
with it. Let's try with fchmodat2() and skip gracefully if not supported.

Co-authored-by: Mike Yuan <me@yhndnzj.com>
6 months agobasic/fs-util: prefer fchmodat2 in fchmod_opath
Arseny Maslennikov [Sat, 21 Oct 2023 08:00:00 +0000 (11:00 +0300)] 
basic/fs-util: prefer fchmodat2 in fchmod_opath

Co-authored-by: Mike Yuan <me@yhndnzj.com>
6 months agobasic/missing_syscall: add missing_fchmodat2()
Arseny Maslennikov [Fri, 20 Oct 2023 11:22:50 +0000 (14:22 +0300)] 
basic/missing_syscall: add missing_fchmodat2()

Follow-up for 8b45281daa3a87b4b7a3248263cd0ba929d15596
and preparation for later commits.

Since libcs are more interested in the POSIX `fchmodat(3)`, they are
unlikely to provide a direct wrapper for this syscall. Thus, the headers
we examine to set `HAVE_*` are picked somewhat arbitrarily.

Also, hook up `try_fchmodat2()` in `test-seccomp.c`. (Also, correct that
function's prototype, despite the fact that mistake would not matter in
practice)

Co-authored-by: Mike Yuan <me@yhndnzj.com>
6 months agoudev: add new builtin net_driver
Lukas Nykryn [Thu, 19 Oct 2023 08:38:06 +0000 (10:38 +0200)] 
udev: add new builtin net_driver

Currently the ID_NET_DRIVER is set in net_setup_link builtin.
But this is called pretty late in the udev processing chain.

Right now in some custom rules it was workarounded by calling ethtool
binary directly, which is ugly.

So let's split this code to a separate builtin.

6 months agoman: run ninja update-man-rules again
Lennart Poettering [Wed, 1 Nov 2023 15:01:25 +0000 (16:01 +0100)] 
man: run ninja update-man-rules again

Apparently this has been forgotten a couple of times.

6 months agochase: fix corner case when using CHASE_PARENT with a path ending in ".."
Lennart Poettering [Wed, 1 Nov 2023 11:46:17 +0000 (12:46 +0100)] 
chase: fix corner case when using CHASE_PARENT with a path ending in ".."

If we use CHASE_PARENT on a path ending in ".." then things are a bit
weird, because we the last path we look at is actually the *parent* and not
the *child* of the preceeding path. Hence we cannot just return the 2nd
to last fd we look at. We have to correct it, by going *two* levels up,
to get to the actual parent, and make sure CHASE_PARENT does what it
should.

Example: for the path /a/b/c chase() with CHASE_PARENT will return
/a/b/c as path, and the fd returned points to /a/b. All good.  But now,
for the path /a/b/c/.. chase() with CHASE_PARENT would previously return
/a/b as path (which is OK) but the fd would point to /a/b/c, which is
*not* the parent of /a/b, after all! To get to the actual parent of
/a/b we have to go *two* levels up to get to /a.

Very confusing. But that's what we here for, no?

@mrc0mmand ran into this in https://github.com/systemd/systemd/pull/28891#issuecomment-1782833722

6 months agoMerge pull request #29764 from dtardon/varlink-io.systemd.service
Luca Boccassi [Wed, 1 Nov 2023 14:41:58 +0000 (14:41 +0000)] 
Merge pull request #29764 from dtardon/varlink-io.systemd.service

Add varlink interface io.systemd.service

6 months agoMerge pull request #29691 from yuwata/dissect
Luca Boccassi [Wed, 1 Nov 2023 14:36:28 +0000 (14:36 +0000)] 
Merge pull request #29691 from yuwata/dissect

udev: update devlink with the newer device node even when priority is equivalent

6 months agobsod,loop-util: fix fd validity check
Lennart Poettering [Wed, 1 Nov 2023 12:08:26 +0000 (13:08 +0100)] 
bsod,loop-util: fix fd validity check

6 months agoproc-cmdline: use read_virtual_file() for /proc/cmdline
Lennart Poettering [Wed, 1 Nov 2023 10:26:03 +0000 (11:26 +0100)] 
proc-cmdline: use read_virtual_file() for /proc/cmdline

6 months agoMerge pull request #29788 from poettering/nspawn-barrier-fix
Lennart Poettering [Wed, 1 Nov 2023 14:20:15 +0000 (15:20 +0100)] 
Merge pull request #29788 from poettering/nspawn-barrier-fix

nspawn: fix barriers when wiping fully visible procfs/sysfs

6 months agocryptenroll: use erase_and_free() at two more places
Lennart Poettering [Wed, 1 Nov 2023 10:26:27 +0000 (11:26 +0100)] 
cryptenroll: use erase_and_free() at two more places

6 months agomeson: bump versions for v255-rc1 29816/head
Luca Boccassi [Wed, 1 Nov 2023 14:01:30 +0000 (14:01 +0000)] 
meson: bump versions for v255-rc1

6 months agoUpdate syscalls table
Luca Boccassi [Wed, 1 Nov 2023 13:58:01 +0000 (13:58 +0000)] 
Update syscalls table

6 months agotools: syscall tables moved to a subdirectory
Luca Boccassi [Wed, 1 Nov 2023 13:50:56 +0000 (13:50 +0000)] 
tools: syscall tables moved to a subdirectory