]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
2 years agoChanged wording in systemd-debug-generator manpage
David [Thu, 17 Mar 2022 17:31:54 +0000 (17:31 +0000)] 
Changed wording in systemd-debug-generator manpage

2 years agotest: wait for loopback device being ready to manipulate
Yu Watanabe [Thu, 17 Mar 2022 11:32:50 +0000 (20:32 +0900)] 
test: wait for loopback device being ready to manipulate

Follow-up for 6626ea08f6db3c050b5e05fa760cf0e371862173.

2 years agoupdate TODO
Lennart Poettering [Thu, 17 Mar 2022 15:24:23 +0000 (16:24 +0100)] 
update TODO

2 years agovarlink_error_invalid_parameter(...) always returns EINVAL
Vishal Chillara Srinivas [Thu, 17 Mar 2022 06:19:00 +0000 (11:49 +0530)] 
varlink_error_invalid_parameter(...) always returns EINVAL

varlink_error(...) expects a json object as the third parameter. Passing a string variant causes
parameter sanitization to fail, and it returns -EINVAL. Pass object variant instead.

2 years agorepart: use assert() when no state is changed
Yu Watanabe [Wed, 16 Mar 2022 16:44:31 +0000 (01:44 +0900)] 
repart: use assert() when no state is changed

2 years agocore: ExecContext::restrict_filesystems is set of string
Yu Watanabe [Wed, 16 Mar 2022 18:42:41 +0000 (03:42 +0900)] 
core: ExecContext::restrict_filesystems is set of string

2 years agoMerge pull request #22770 from yuwata/sd-radv-fixes
Yu Watanabe [Thu, 17 Mar 2022 11:09:41 +0000 (20:09 +0900)] 
Merge pull request #22770 from yuwata/sd-radv-fixes

sd-radv: several fixes

2 years agotimedate: use cleanup attribute at one more place
Yu Watanabe [Tue, 15 Mar 2022 07:14:07 +0000 (16:14 +0900)] 
timedate: use cleanup attribute at one more place

2 years agosd-radv: fix indentation 22770/head
Yu Watanabe [Wed, 16 Mar 2022 12:18:57 +0000 (21:18 +0900)] 
sd-radv: fix indentation

2 years agosd-radv: do not use iterater outside of the loop
Yu Watanabe [Wed, 16 Mar 2022 12:16:54 +0000 (21:16 +0900)] 
sd-radv: do not use iterater outside of the loop

2 years agosd-radv: voidify sd_radv_remove_prefix()
Yu Watanabe [Wed, 16 Mar 2022 12:12:37 +0000 (21:12 +0900)] 
sd-radv: voidify sd_radv_remove_prefix()

If the prefix is only referenced by sd_radv, then the returned pointer
is already freed.

networkd does not uses the returned value. Let's voidify the function.

2 years agotpm2: enable parameter encryption
Grigori Goronzy [Sat, 26 Feb 2022 09:41:16 +0000 (10:41 +0100)] 
tpm2: enable parameter encryption

Use a salted, unbound HMAC session with the primary key used as tpmKey,
which mean that the random salt will be encrypted with the primary
key while in transit. Decrypt/encrypt flags are set on the new session
with AES in CFB mode. There is no fallback to XOR mode.

This provides confidentiality and replay protection, both when sealing
and unsealing. There is no protection against man in the middle
attacks since we have no way to authenticate the TPM at the moment.
The exception is unsealing with PIN, as an attacker will be unable
to generate the proper HMAC digest.

2 years agoMerge pull request #22768 from poettering/cgls-delegate-xattr
Anita Zhang [Wed, 16 Mar 2022 21:49:00 +0000 (14:49 -0700)] 
Merge pull request #22768 from poettering/cgls-delegate-xattr

make "delegate" xattr also available for unpriv programs

2 years agoMerge pull request #22761 from poettering/pcr-fix
Lennart Poettering [Wed, 16 Mar 2022 21:32:43 +0000 (22:32 +0100)] 
Merge pull request #22761 from poettering/pcr-fix

sd-boot: change kernel cmdline PCR from 8 to 12

2 years agoMerge pull request #22765 from medhefgo/test
Yu Watanabe [Wed, 16 Mar 2022 18:07:36 +0000 (03:07 +0900)] 
Merge pull request #22765 from medhefgo/test

test: Use TEST macros in more places

2 years agosd-boot: disable bitlocker reboot feature for now
Lennart Poettering [Wed, 16 Mar 2022 11:01:37 +0000 (12:01 +0100)] 
sd-boot: disable bitlocker reboot feature for now

Conceptually the feature is great and should exist, but in its current
form should be worked to be generic (i.e. not specific to
Windows/Bitlocker, but appliable to any boot entry), not be global (but
be a per-entry thing), not require a BootXXXX entry to exist, and not
check for the BitLocker signature (as TPMs are not just used for
BitLocker).

Since we want to get 251 released, mark it in the documentation, in NEWS
and in code as experimental and make clear it will be reworked in a
future release. Also, make it opt-in to make it less likely people come
to rely on it without reading up on it, and understanding that it will
likely change sooner or later.

Follow-up for: #22043
See: #22390

2 years agoMerge pull request #22563 from grigorig/cryptenroll-tpm2-pin
Lennart Poettering [Wed, 16 Mar 2022 17:04:28 +0000 (18:04 +0100)] 
Merge pull request #22563 from grigorig/cryptenroll-tpm2-pin

sd-cryptenroll TPM2 PIN protected unlock

2 years agoNEWS: add entry announcing PCR change 22761/head
Lennart Poettering [Wed, 16 Mar 2022 10:00:27 +0000 (11:00 +0100)] 
NEWS: add entry announcing PCR change

2 years agoman: only document new PCR 12
Lennart Poettering [Wed, 16 Mar 2022 09:50:34 +0000 (10:50 +0100)] 
man: only document new PCR 12

2 years agosd-boot: measure kernel cmdline into PCR 12 rather than 8
Lennart Poettering [Wed, 16 Mar 2022 09:51:03 +0000 (10:51 +0100)] 
sd-boot: measure kernel cmdline into PCR 12 rather than 8

Apparently Grub is measuring all kinds of garbage into PCR 8. Since people
apparently chainload sd-boot from grub, let's thus stay away from PCR 8,
and use PCR 12 instead for the kernel command line.

As discussed here: #22635

Fixes: #22635
2 years agoboot: use UINT32 as type for PCR indexes
Lennart Poettering [Wed, 16 Mar 2022 09:36:39 +0000 (10:36 +0100)] 
boot: use UINT32 as type for PCR indexes

Thisis what the TPM2/UEFI headers use, and most of our EFI codebase.
Let's also use the same type here in cpio.[ch]

2 years agoboot: drop const from EFI_PHYSICAL_ADDRESS parameter
Lennart Poettering [Wed, 16 Mar 2022 09:34:53 +0000 (10:34 +0100)] 
boot: drop const from EFI_PHYSICAL_ADDRESS parameter

It's not a pointer after all, but a numeric value. As such the const
applies to the value and not the target, but we genreally don#t do that
for value parameters. Hence drop the const.

2 years agocgroup: also set user.invocation_id in addition to trusted.invocation_id 22768/head
Lennart Poettering [Wed, 16 Mar 2022 15:47:07 +0000 (16:47 +0100)] 
cgroup: also set user.invocation_id in addition to trusted.invocation_id

Similar thinking as the preceeding commit.

(While we are at it, let's unify some code we use over and over again in
two helper functions)

2 years agodocs: document the user.delegate xattr
Lennart Poettering [Wed, 16 Mar 2022 15:31:24 +0000 (16:31 +0100)] 
docs: document the user.delegate xattr

2 years agocgroup: also indicate cgroup delegation state in user-accessible xattr
Lennart Poettering [Wed, 16 Mar 2022 13:58:57 +0000 (14:58 +0100)] 
cgroup: also indicate cgroup delegation state in user-accessible xattr

So far we set the "trusted.delegate" xattr on cgroups where delegation
is on. This duplicates this behaviour with the "user.delegate" xattr.
This has two benefits:

1. unprivileged clients can *read* the xattr. "systemd-cgls" can thus
   show delegated cgroups as such properly, even when invoked without
   privs

2. unprivileged systemd instances can set the xattr, i.e. when systemd
   --user delegates a cgroup to further payloads.

This weakens security a tiny bit, given that code that got a cgroup
delegated can manipulate the xattr, but I think that's OK, given they
have a higher trust level regarding cgroups anyway, if they got a
subtree delegated, and access controls on the cgroup itself are still
enforced. Moreover PID 1 as the cgroup manager only sets these xattrs,
never reads them — the xattr is primarily a way to tell payloads about
the delegation, and it's strictly this one way.

2 years agotest-journal-syslog: Add some valid priority cases 22765/head
Jan Janssen [Wed, 16 Mar 2022 10:05:13 +0000 (11:05 +0100)] 
test-journal-syslog: Add some valid priority cases

2 years agotest: Use C11 UTF-16 string literal
Jan Janssen [Mon, 14 Mar 2022 09:32:48 +0000 (10:32 +0100)] 
test: Use C11 UTF-16 string literal

2 years agotest: Use TEST macros in more places
Jan Janssen [Mon, 14 Mar 2022 09:37:27 +0000 (10:37 +0100)] 
test: Use TEST macros in more places

2 years agocgroup-show: split out delegation xattr check into its own function
Lennart Poettering [Wed, 16 Mar 2022 13:29:49 +0000 (14:29 +0100)] 
cgroup-show: split out delegation xattr check into its own function

Just some refactoring.

2 years agoupdate TODO
Lennart Poettering [Wed, 16 Mar 2022 10:33:27 +0000 (11:33 +0100)] 
update TODO

2 years agodocs: s/straight-forward/straightforward/
Lennart Poettering [Tue, 15 Mar 2022 16:04:36 +0000 (17:04 +0100)] 
docs: s/straight-forward/straightforward/

Inspired by https://github.com/systemd/systemd/pull/20156#discussion_r810878846

2 years agoMerge pull request #22746 from yuwata/home-cleanups
Luca Boccassi [Tue, 15 Mar 2022 22:44:58 +0000 (22:44 +0000)] 
Merge pull request #22746 from yuwata/home-cleanups

home: two cleanups

2 years agoimport: improve error message
Lennart Poettering [Tue, 15 Mar 2022 17:35:48 +0000 (18:35 +0100)] 
import: improve error message

As suggested: https://github.com/systemd/systemd/pull/20156#discussion_r810941489

2 years agoMerge pull request #22757 from DaanDeMeyer/bpf-error
Luca Boccassi [Tue, 15 Mar 2022 22:42:48 +0000 (22:42 +0000)] 
Merge pull request #22757 from DaanDeMeyer/bpf-error

BPF error logging improvements

2 years agocryptenroll: add tests for TPM2 unlocking 22563/head
Grigori Goronzy [Thu, 24 Feb 2022 00:28:29 +0000 (01:28 +0100)] 
cryptenroll: add tests for TPM2 unlocking

Add tests for enrolling and unlocking. Various cases are tested:

- Default PCR 7 policy w/o PIN, good and bad cases (wrong PCR)
- PCR 7 + PIN policy, good and bad cases (wrong PCR, wrong PIN)
- Non-default PCR 0+7 policy w/o PIN, good and bad cases (wrong PCR 0)

v2: rename test, fix tss2 library installation, fix CI failures
v3: fix ppc64, load module

2 years agocryptsetup: add manual TPM2 PIN configuration
Grigori Goronzy [Fri, 18 Feb 2022 20:13:41 +0000 (21:13 +0100)] 
cryptsetup: add manual TPM2 PIN configuration

Handle the case where TPM2 metadata is not available and explicitly
provided in crypttab. This adds a new "tpm2-pin" option to crypttab
options for this purpose.

2 years agocryptenroll: add TPM2 PIN documentation
Grigori Goronzy [Fri, 18 Feb 2022 11:51:00 +0000 (12:51 +0100)] 
cryptenroll: add TPM2 PIN documentation

2 years agocryptsetup: add libcryptsetup TPM2 PIN support
Grigori Goronzy [Fri, 18 Feb 2022 11:00:12 +0000 (12:00 +0100)] 
cryptsetup: add libcryptsetup TPM2 PIN support

This is unfinished: we don't have any way to actually query for PINs
interactively this way. It is similar to FIDO2 and PKCS#11 in this
regard.

Nonetheless, this code is capable of validating and dumping tokens, so
it is already useful as-is.

2 years agocryptsetup: add support for TPM2 pin
Grigori Goronzy [Fri, 18 Feb 2022 10:56:02 +0000 (11:56 +0100)] 
cryptsetup: add support for TPM2 pin

Extend cryptsetup for TPM2 pin entry, similar to FIDO2.

2 years agocryptenroll: add support for TPM2 pin
Grigori Goronzy [Fri, 18 Feb 2022 10:51:25 +0000 (11:51 +0100)] 
cryptenroll: add support for TPM2 pin

Add support for PIN enrollment with TPM2. A new "tpm2-pin" field is
introduced into metadata to signal that the policy needs to include a
PIN.

v2: fix tpm2_make_luks2_json in sd-repart

2 years agotpm2: support policies with PIN
Grigori Goronzy [Wed, 16 Feb 2022 21:13:42 +0000 (22:13 +0100)] 
tpm2: support policies with PIN

Modify TPM2 authentication policy to optionally include an authValue, i.e.
a password/PIN. We use the "PIN" terminology since it's used by other
systems such as Windows, even though the PIN is not necessarily numeric.

The pin is hashed via SHA256 to allow for arbitrary length PINs.

v2: fix tpm2_seal in sd-repart
v3: applied review feedback

2 years agohmac/sha256: move size define to sha256.h
Grigori Goronzy [Fri, 11 Mar 2022 23:51:21 +0000 (00:51 +0100)] 
hmac/sha256: move size define to sha256.h

2 years agobpf: Fix error handling 22757/head
Daan De Meyer [Tue, 15 Mar 2022 17:14:19 +0000 (17:14 +0000)] 
bpf: Fix error handling

The __open() functions actually set errno on failure so let's
update the error handling to account for that.

2 years agobpf: Log at debug when checking if restricting ifaces is supported
Daan De Meyer [Tue, 15 Mar 2022 17:12:06 +0000 (17:12 +0000)] 
bpf: Log at debug when checking if restricting ifaces is supported

Same change as 1a9e33aee36b4c353628068507ba1dd7d76b6e14 did for
socket-bind.

2 years agohome: use open_image_file() helper at one more place 22746/head
Yu Watanabe [Mon, 14 Mar 2022 07:01:23 +0000 (16:01 +0900)] 
home: use open_image_file() helper at one more place

2 years agoMerge pull request #22745 from yuwata/test-repart-fixes
Frantisek Sumsal [Tue, 15 Mar 2022 11:52:50 +0000 (11:52 +0000)] 
Merge pull request #22745 from yuwata/test-repart-fixes

test: fixes for TEST-58-REPART

2 years agoMerge pull request #22739 from mrc0mmand/list-boot-followup
Yu Watanabe [Tue, 15 Mar 2022 06:59:45 +0000 (15:59 +0900)] 
Merge pull request #22739 from mrc0mmand/list-boot-followup

A couple of follow-ups for #22721

2 years agohome: shorten code a bit and add missing assertions
Yu Watanabe [Sun, 13 Mar 2022 07:17:08 +0000 (16:17 +0900)] 
home: shorten code a bit and add missing assertions

This drops redundant call of fstat(), and reduces indentation.

2 years agotest: wait for loopback device being actually created 22745/head
Yu Watanabe [Mon, 14 Mar 2022 13:02:37 +0000 (22:02 +0900)] 
test: wait for loopback device being actually created

It seems there exists a short time period that we cannot see the
loopback device after `losetup` is finished:
```
testsuite-58.sh[367]: ++ losetup -b 1024 -P --show -f /tmp/testsuite-58-sector-1024.img
kernel: loop1: detected capacity change from 0 to 204800
testsuite-58.sh[285]: + LOOP=/dev/loop1
testsuite-58.sh[285]: + systemd-repart --pretty=yes --definitions=/tmp/testsuite-58-sector/ --seed=750b6cd5c4ae4012a15e7be3c29e6a47 --empty=require --dry-run=no /dev/loop1
testsuite-58.sh[368]: Device '/dev/loop1' has no dm-crypt/dm-verity device, no need to look for underlying block device.
testsuite-58.sh[368]: Failed to determine canonical path for '/dev/loop1': No such file or directory
testsuite-58.sh[368]: Failed to open file or determine backing device of /dev/loop1: No such file or directory
```

2 years agotest: format disk image through loopback device
Yu Watanabe [Sun, 13 Mar 2022 17:26:25 +0000 (02:26 +0900)] 
test: format disk image through loopback device

It seems that the change on the image file sometimes not propagated on
the loopback device immediately.

2 years agotest: use /var/tmp for storing disk images
Yu Watanabe [Sun, 13 Mar 2022 12:38:10 +0000 (21:38 +0900)] 
test: use /var/tmp for storing disk images

The Ubuntu CI on ppc64el seems to have a issue on tmpfs, and files
may not be fsynced. See c10caebb98803b812ebc4dd6cdeaab2ca17826d7.
For safety, let's use /var/tmp to store disk images.

2 years agoMerge pull request #22730 from GeorgesStavracas/gbsneto/multimedia-stream-deck
Luca Boccassi [Mon, 14 Mar 2022 23:40:51 +0000 (23:40 +0000)] 
Merge pull request #22730 from GeorgesStavracas/gbsneto/multimedia-stream-deck

Add AV production devices to hwdb

2 years agounits: fix factory-reset.target description
Vivien Didelot [Mon, 14 Mar 2022 20:34:57 +0000 (16:34 -0400)] 
units: fix factory-reset.target description

The current description for the factory reset target does not add any
value and doesn't respect the definition of the related property as
described in systemd.unit(5).

Starting the target currently results in the following log:

    [   11.139174] systemd[1]: Reached target Target that triggers factory reset. Does nothing by default..
    [  OK  ] Reached target Target that…set. Does nothing by default..

Simply update the target description to "Factory Reset".

Signed-off-by: Vivien Didelot <vivien.didelot@gmail.com>
2 years agojournal: make --reverse affect --list-boots 22739/head
Frantisek Sumsal [Mon, 14 Mar 2022 17:43:03 +0000 (18:43 +0100)] 
journal: make --reverse affect --list-boots

Fixes: #16274
2 years agojournal: use table_set_json_field_name() to override a column name
Frantisek Sumsal [Mon, 14 Mar 2022 17:26:53 +0000 (18:26 +0100)] 
journal: use table_set_json_field_name() to override a column name

Pointed out in: https://github.com/systemd/systemd/pull/22721#discussion_r826014227
Follow-up for: 5a1355d848a0f6564a04c6d8268e72bc93d173de

2 years agoMerge pull request #22734 from poettering/decimal-str-width-test
Lennart Poettering [Mon, 14 Mar 2022 22:07:59 +0000 (23:07 +0100)] 
Merge pull request #22734 from poettering/decimal-str-width-test

DECIMAL_STR_WIDTH() + DECIMAL_STR_MAX() tweaks

2 years agoMerge pull request #22727 from fbuihuu/journald-preserve-acl-when-rotating
Luca Boccassi [Mon, 14 Mar 2022 20:39:14 +0000 (20:39 +0000)] 
Merge pull request #22727 from fbuihuu/journald-preserve-acl-when-rotating

Journald preserve acl when rotating

2 years agorandom-util: remove RDRAND usage
Jason A. Donenfeld [Mon, 7 Mar 2022 05:15:44 +0000 (22:15 -0700)] 
random-util: remove RDRAND usage

/dev/urandom is seeded with RDRAND. Calling genuine_random_bytes(...,
..., 0) will use /dev/urandom as a last resort. Hence, we gain nothing
here by having our own RDRAND wrapper, because /dev/urandom already is
based on RDRAND output, even before /dev/urandom has fully initialized.

Furthermore, RDRAND is not actually fast! And on each successive
generation of new x86 CPUs, from both AMD and Intel, it just gets
slower.

This commit simplifies things by just using /dev/urandom in cases where
we before might use RDRAND, since /dev/urandom will always have RDRAND
mixed in as part of it.

And above where I say "/dev/urandom", what I actually mean is
GRND_INSECURE, which is the same thing but won't generate warnings in
dmesg.

2 years agodocs: document how we usually define enums
Lennart Poettering [Mon, 14 Mar 2022 10:53:35 +0000 (11:53 +0100)] 
docs: document how we usually define enums

2 years agohostnamed: update chassis table to SMBIOS 3.5
Lennart Poettering [Mon, 14 Mar 2022 10:52:30 +0000 (11:52 +0100)] 
hostnamed: update chassis table to SMBIOS 3.5

2 years agodocs: document we use C11 with GNU extensions now
Lennart Poettering [Mon, 14 Mar 2022 14:56:53 +0000 (15:56 +0100)] 
docs: document we use C11 with GNU extensions now

Follow-up for: #22711

2 years agohwdb: Add AV production access to Elgado Stream Deck devices 22730/head
Georges Basile Stavracas Neto [Mon, 14 Mar 2022 13:50:45 +0000 (10:50 -0300)] 
hwdb: Add AV production access to Elgado Stream Deck devices

The Stream Deck products from Elgato are simple key pads
intended to be used as macro pads. They're popular within
the streaming community.

This commit adds all 5 Stream Deck variants available to
the AV production file.

See https://www.elgato.com/en/stream-deck

2 years agoAdd AV production controllers to hwdb and add uaccess
Be [Sat, 28 Aug 2021 03:30:50 +0000 (22:30 -0500)] 
Add AV production controllers to hwdb and add uaccess

This adds support for AV production controller devices, such
as DJ tables, music-oriented key pads, and others.

The USB vendor and product IDs come from Mixxx, Ctlra, and
Ardour.

Fixes #20533

Co-developed-by: Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
2 years agojournal: reset previously set JSON flags
Frantisek Sumsal [Mon, 14 Mar 2022 17:16:15 +0000 (18:16 +0100)] 
journal: reset previously set JSON flags

Make sure we reset the JSON format flags if the format option is used
multiple times, e.g. `journalctl -o json-format -o export`.

Pointed out in: https://github.com/systemd/systemd/pull/22721#discussion_r826018985
Follow-up for: 5a1355d848a0f6564a04c6d8268e72bc93d173de

2 years agotest: add test case for DECIMAL_STR_MAX() 22734/head
Lennart Poettering [Mon, 14 Mar 2022 13:48:17 +0000 (14:48 +0100)] 
test: add test case for DECIMAL_STR_MAX()

2 years agomacro: handle DECIMAL_STR_MAX() special cases more accurately
Lennart Poettering [Mon, 14 Mar 2022 13:44:54 +0000 (14:44 +0100)] 
macro: handle DECIMAL_STR_MAX() special cases more accurately

So far DECIMAL_STR_MAX() overestimated the types in two ways: it would
also adds space for a "-" for unsigned types.

And it would always return the same size for 64bit values regardless of
signedness, even though the longest maximum numbers for signed and
unsigned differ in length by one digit. i.e. 2^64-1 (i.e. UINT64_MAX) is
one decimal digit longer than -2^63 (INT64_MIN) - for the other integer
widths the number of digits in the "longest" decimal value is always the
same, regardless of signedness. by example: strlen("65535") ==
strlen("32768") (i.e. the relevant 16 bit limits) holds — and similar
for 8bit and 32bit integer width limits — but
strlen("18446744073709551615") > strlen("9223372036854775808") (i.e. the
relevant 64 bit limits).

Let's fix both misestimations.

2 years agotest: add test for DECIMAL_STR_WIDTH()
Lennart Poettering [Mon, 14 Mar 2022 11:02:42 +0000 (12:02 +0100)] 
test: add test for DECIMAL_STR_WIDTH()

2 years agomacro: DECIMAL_STR_WIDTH() is about *values* not *types*
Lennart Poettering [Mon, 14 Mar 2022 11:01:47 +0000 (12:01 +0100)] 
macro: DECIMAL_STR_WIDTH() is about *values* not *types*

Hence, check if the value is negative, not whether the type can carry
negatives.

Follow-up for: e3dd9ea8ea4510221f73071ad30ee657ca77565d

2 years agotest: change // comments to /* */
Lennart Poettering [Mon, 14 Mar 2022 10:53:02 +0000 (11:53 +0100)] 
test: change // comments to /* */

We use // comments only for "FIXME" style comments, and explanatory
comments get /* */, as per coding style.

2 years agocopy: use FLAGS_SET() in copy_xattr() 22727/head
Franck Bui [Mon, 14 Mar 2022 17:05:49 +0000 (18:05 +0100)] 
copy: use FLAGS_SET() in copy_xattr()

2 years agojournal: preserve acls when rotating user journals with NOCOW attribute set
Franck Bui [Mon, 14 Mar 2022 17:03:02 +0000 (18:03 +0100)] 
journal: preserve acls when rotating user journals with NOCOW attribute set

When restoring the COW flag for journals on BTRFS, the full journal contents
are copied into new files. But during these operations, the acls of the
previous files were lost and users were not able to access to their old
journal contents anymore.

2 years agocopy: fix wrong argument passed to S_ISREG() in copy_file_fd_full()
Franck Bui [Mon, 14 Mar 2022 08:30:11 +0000 (09:30 +0100)] 
copy: fix wrong argument passed to S_ISREG() in copy_file_fd_full()

Follow-up for 2f782044986a30bf73f1fe00209dbd204b3efe33.

2 years agorandom-util: drop left-over comment
Lennart Poettering [Wed, 9 Mar 2022 13:32:41 +0000 (14:32 +0100)] 
random-util: drop left-over comment

We don't use non-blocking mode anymore, since 31234fbeec1c4a8e500106dff4779ccaa5baef83

Follow-up for: 31234fbeec1c4a8e500106dff4779ccaa5baef83

2 years agoMerge pull request #22721 from mrc0mmand/journalctl-tweaks
Yu Watanabe [Mon, 14 Mar 2022 01:59:13 +0000 (10:59 +0900)] 
Merge pull request #22721 from mrc0mmand/journalctl-tweaks

journal: convert --list-boots to a table

2 years agotest: extend format-table tests with negative numbers 22721/head
Frantisek Sumsal [Sun, 13 Mar 2022 19:32:18 +0000 (20:32 +0100)] 
test: extend format-table tests with negative numbers

2 years agoman: replace full stop with colon
Yu Watanabe [Sun, 13 Mar 2022 13:33:27 +0000 (22:33 +0900)] 
man: replace full stop with colon

Fixes #22724.

2 years agojournal: convert --list-boots to a table
Frantisek Sumsal [Sat, 12 Mar 2022 19:37:16 +0000 (20:37 +0100)] 
journal: convert --list-boots to a table

so it can be output as JSON as well.

```
$ build-san/journalctl --list-boots --file boot-test.journal
IDX BOOT ID                          FIRST ENTRY                 LAST ENTRY
 -3 39d66eb1925f4d01b8464d502650a714 Sat 2022-03-05 15:20:33 CET Sat 2022-03-05 16:19:21 CET
 -2 5dffeb08a27344d5ae9e2fc244bbcbc5 Fri 2022-03-11 17:23:57 CET Fri 2022-03-11 17:38:31 CET
 -1 c8ebd52915b642c39eda4bf00f864f79 Fri 2022-03-11 17:38:41 CET Fri 2022-03-11 20:03:46 CET
  0 00bcba97c7094fa88cc5d1cf2a389057 Sat 2022-03-12 20:39:08 CET Sat 2022-03-12 20:40:18 CET

$ build-san/journalctl --list-boots --file boot-test.journal -q
-3 39d66eb1925f4d01b8464d502650a714 Sat 2022-03-05 15:20:33 CET Sat 2022-03-05 16:19:21 CET
-2 5dffeb08a27344d5ae9e2fc244bbcbc5 Fri 2022-03-11 17:23:57 CET Fri 2022-03-11 17:38:31 CET
-1 c8ebd52915b642c39eda4bf00f864f79 Fri 2022-03-11 17:38:41 CET Fri 2022-03-11 20:03:46 CET
 0 00bcba97c7094fa88cc5d1cf2a389057 Sat 2022-03-12 20:39:08 CET Sat 2022-03-12 20:40:18 CET

$ build-san/journalctl --list-boots --file boot-test.journal -o json-pretty
[
        {
                "index" : -3,
                "boot_id" : "39d66eb1925f4d01b8464d502650a714",
                "first_entry" : 1646490033438495,
                "last_entry" : 1646493561047353
        },
        {
                "index" : -2,
                "boot_id" : "5dffeb08a27344d5ae9e2fc244bbcbc5",
                "first_entry" : 1647015837289036,
                "last_entry" : 1647016711595489
        },
        {
                "index" : -1,
                "boot_id" : "c8ebd52915b642c39eda4bf00f864f79",
                "first_entry" : 1647016721056382,
                "last_entry" : 1647025426397414
        },
        {
                "index" : 0,
                "boot_id" : "00bcba97c7094fa88cc5d1cf2a389057",
                "first_entry" : 1647113948506002,
                "last_entry" : 1647114018943637
        }
]
```

Resolves: #14625

2 years agomacro: account for negative values in DECIMAL_STR_WIDTH()
Frantisek Sumsal [Sun, 13 Mar 2022 13:45:03 +0000 (14:45 +0100)] 
macro: account for negative values in DECIMAL_STR_WIDTH()

With negative numbers we wouldn't account for the minus sign, thus
returning a string with one character too short, triggering buffer
overflows in certain situations.

2 years agodoc: fix error code
Yu Watanabe [Sun, 13 Mar 2022 09:34:39 +0000 (18:34 +0900)] 
doc: fix error code

2 years agotime-util: support parsing OUTPUT_SHORT and OUTPUT_SHORT_PRECISE timestamps
Frantisek Sumsal [Sat, 12 Mar 2022 11:17:46 +0000 (12:17 +0100)] 
time-util: support parsing OUTPUT_SHORT and OUTPUT_SHORT_PRECISE timestamps

so we can feed journalctl the localized syslog-style timestamps it shows
by default, e.g.:

```
$ LANG=cs_CZ.utf-8 build-san/journalctl -b --no-hostname | head -n1
led 30 22:13:54 systemd-journald[981]: System Journal (/var/log/journal/1588e1d9d0b74acdbaada907b163b837) is 4.1G, max 4.0G, 0B free.
$ LANG=cs_CZ.utf-8 build-san/journalctl --no-hostname --since 'led 30 22:13:54' -n1
led 30 22:13:54 systemd-journald[981]: System Journal (/var/log/journal/1588e1d9d0b74acdbaada907b163b837) is 4.1G, max 4.0G, 0B free.
$ LANG=cs_CZ.utf-8 build-san/journalctl --no-hostname --since 'led 30 22:13:54.9999' -n1
led 30 22:13:58 rsyslogd[1300]: imjournal: journal files changed, reloading...  [v8.2102.0-4.fc35 try https://www.rsyslog.com/e/0 ]
```

Resolves: #15899

2 years agoMerge pull request #22463 from poettering/kernel-install-propagate-machine-id
Luca Boccassi [Sat, 12 Mar 2022 17:17:28 +0000 (17:17 +0000)] 
Merge pull request #22463 from poettering/kernel-install-propagate-machine-id

kernel-install: clean-up machine-id handling

2 years agoMerge pull request #22711 from yuwata/c11
Yu Watanabe [Sat, 12 Mar 2022 05:27:48 +0000 (14:27 +0900)] 
Merge pull request #22711 from yuwata/c11

move to C11 (gnu11) and use u8 specifier for special characters

2 years agoMerge pull request #22714 from mrc0mmand/codeql-docs
Luca Boccassi [Fri, 11 Mar 2022 19:03:38 +0000 (19:03 +0000)] 
Merge pull request #22714 from mrc0mmand/codeql-docs

A couple of doc updates

2 years agoresolve: update the referenced RFC & section for mDNS 22714/head
Frantisek Sumsal [Fri, 11 Mar 2022 15:55:55 +0000 (16:55 +0100)] 
resolve: update the referenced RFC & section for mDNS

Resolves: #20386

2 years agotest: document how to run CodeQL/LGTM stuff manually
Frantisek Sumsal [Fri, 11 Mar 2022 15:51:53 +0000 (16:51 +0100)] 
test: document how to run CodeQL/LGTM stuff manually

Let's have this documented somewhere so I don't have to relearn all this
stuff every time I need it.

2 years agoMerge pull request #22631 from yuwata/network-redesign-request-queue
Luca Boccassi [Fri, 11 Mar 2022 10:48:45 +0000 (10:48 +0000)] 
Merge pull request #22631 from yuwata/network-redesign-request-queue

network: re-design request queue

2 years agoNEWS: add NEWS entry highlighting what the "entry-token" logic means for "gold image... 22463/head
Lennart Poettering [Tue, 15 Feb 2022 16:59:36 +0000 (17:59 +0100)] 
NEWS: add NEWS entry highlighting what the "entry-token" logic means for "gold image" builders

2 years agobootctl: update to new kernel-install semantics
Lennart Poettering [Thu, 10 Feb 2022 17:01:36 +0000 (18:01 +0100)] 
bootctl: update to new kernel-install semantics

This makes a bunch of closely related changes:

1. The "entry-token" concept already introduced in kernel-install is now
   made use of. i.e. specifically there's a new option --entry-token=
   that can be used to explicitly select by which ID to identify boot
   loader entries: the machine ID, or some OS ID (ID= or IMAGE_ID= from
   /etc/os-release, or even some completely different string. The
   selected string is then persisted to /etc/kernel/entry-token, so that
   kernel-install can find it there.

2. The --make-machine-id-directory= switch is renamed to
   --make-entry-directory= since after all it's not necessarily the
   machine ID the dir is named after, but can be any other string as
   selected by the entry token.

3. This drops all code to make automatic changes to /etc/machine-info.
   Specifically, the KERNEL_INSTALL_MACHINE_ID= field is now more
   generically implemented in /etc/kernel/entry-token described above,
   hence no need to place it at two locations. And the
   KERNEL_INSTALL_LAYOUT= field is not configurable by user switch or
   similar anyway in bootctl, but only read from
   /etc/kernel/install.conf, and hence copying it from one configuration
   file to another appears unnecessary, the second copy is fully
   redundant. Note that this just drops writing these fields, they'll
   still be honoured when already set.

2 years agoman: document recent changes
Lennart Poettering [Thu, 10 Feb 2022 14:27:45 +0000 (15:27 +0100)] 
man: document recent changes

This drops documentation of KERNEL_INSTALL_MACHINE_ID as machine-info
field (though we'll still read it for compat).

This updates the kernel-install man page to always say "ENTRY-TOKEN"
instead of "MACHINE-ID" where appropriate, to clear the confusion up
between the two.

This also tries to fix how we denote env vars (always prefix with $ and
without = suffix), and other vars (without $ but with = suffix)

Other fixes.

2 years agokernel-install: add new "inspect" verb, showing paths and parameters we discovered
Lennart Poettering [Thu, 10 Feb 2022 13:37:37 +0000 (14:37 +0100)] 
kernel-install: add new "inspect" verb, showing paths and parameters we discovered

2 years agokernel-install: search harder for kernel image/initrd drop-in dir
Lennart Poettering [Thu, 10 Feb 2022 13:27:22 +0000 (14:27 +0100)] 
kernel-install: search harder for kernel image/initrd drop-in dir

If not explicitly configured, let's search a bit harder for the
ENTRY_TOKEN, and let's try the machine ID, the IMAGE_ID and ID fields of
/etc/os-release and finally "Default", all below potential $XBOOTLDR.

2 years agokernel-install: only generate systemd.boot_id= in kernel command line if used for...
Lennart Poettering [Wed, 9 Feb 2022 13:44:48 +0000 (14:44 +0100)] 
kernel-install: only generate systemd.boot_id= in kernel command line if used for naming the boot loader spec files/dirs

Now that we can distinguish the naming of the boot loader spec
dirs/files and the machine ID let's tweak the logic for suffixing the
kernel cmdline with systemd.boot_id=: let's only do that when we
actually need the boot ID for naming these dirs/files. If we don't,
let's not bother.

This should be beneficial for "golden" images that shall not carry any
machine IDs at all, i.e acquire their identity only once the final
userspace is actually reached.

2 years agokernel-install: add a new $ENTRY_TOKEN variable for naming boot entries
Lennart Poettering [Wed, 9 Feb 2022 13:29:19 +0000 (14:29 +0100)] 
kernel-install: add a new $ENTRY_TOKEN variable for naming boot entries

This cleans up naming of boot loader spec boot entries a bit (i.e. the
naming of the .conf snippet files, and the directory in $BOOT where the
kernel images and initrds are placed), and isolates it from the actual machine
ID concept.

Previously there was a sinlge concept for both things, because typically
the entries are just named after the machine ID. However one could also
use a different identifier, i.e. not a 128bit ID in which cases issues
pop up everywhere. For example, the "machine-id" field in the generated
snippets would not be a machine ID anymore, and the newly added
systemd.machine_id= kernel parameter would possibly get passed invalid
data.

Hence clean this up:

$MACHINE_ID → always a valid 128bit ID.

$ENTRY_TOKEN → usually the $MACHINE_ID but can be any other string too.
This is used to name the directory to put kernels/initrds in. It's also
used for naming the *.conf snippets that implement the Boot Loader Type
1 spec.

2 years agokernel-install: don't try to persist used machine ID locally
Lennart Poettering [Wed, 9 Feb 2022 12:59:36 +0000 (13:59 +0100)] 
kernel-install: don't try to persist used machine ID locally

This reworks the how machine ID used by the boot loader spec snippet
generation logic. Instead of persisting it automatically to /etc/ we'll
append it via systemd.machined_id= to the kernel command line, and thus
persist it in the generated boot loader spec snippets instead. This has
nice benefits:

  1. We do not collide with read-only root
  2. The machine ID remains stable across factory reset, so that we can
     safely recognize the path in $BOOT we drop our kernel images in
     again, i.e. kernel updates will work correctly and safely across
     kernel factory resets.
  3. Previously regular systems had different machine IDs while in
     initrd and after booting into the host system. With this change
     they will now have the same.

This then drops implicit persisting of KERNEL_INSTALL_MACHINE_ID, as its
unnecessary then. The field is still honoured though, for compat
reasons.

This also drops the "Default" fallback previously used, as it actually
is without effect, the randomized ID generation already took precedence
in all cases. This means $MACHNE_ID/KERNEL_INSTALL_MACHINE_ID are now
guaranteed to look like a proper machine ID, which is useful for us,
given you need it that way to be able to pass it to the
systemd.machine_id= kernel command line option.

2 years agoMerge pull request #22618 from yuwata/network-safe-string
Lennart Poettering [Fri, 11 Mar 2022 10:33:07 +0000 (11:33 +0100)] 
Merge pull request #22618 from yuwata/network-safe-string

network: dhcp-server: refuse unsafe filename

2 years agofix signature of sd_journal_print_with_location in docs
Marcel Hellwig [Fri, 11 Mar 2022 07:23:45 +0000 (08:23 +0100)] 
fix signature of sd_journal_print_with_location in docs

2 years agogitignore: ignore mkosi.installdir
Clyde Byrd III [Fri, 11 Mar 2022 01:43:26 +0000 (17:43 -0800)] 
gitignore: ignore mkosi.installdir

2 years agolgtm: disable cpp/missing-return 22711/head
Yu Watanabe [Fri, 11 Mar 2022 08:19:29 +0000 (17:19 +0900)] 
lgtm: disable cpp/missing-return

As it does not handle assert_not_reahed() gracefully.

2 years agoqrcode-util: use u8 literal specifier
Yu Watanabe [Fri, 11 Mar 2022 06:59:58 +0000 (15:59 +0900)] 
qrcode-util: use u8 literal specifier

2 years agohostnamectl: use u8 literal specifier
Yu Watanabe [Fri, 11 Mar 2022 06:53:18 +0000 (15:53 +0900)] 
hostnamectl: use u8 literal specifier