Zbigniew Jędrzejewski-Szmek [Wed, 2 Mar 2022 16:17:39 +0000 (17:17 +0100)]
shared/install: consistently use 'lp' as the name for the LookupPaths instance
Most of the codebase does this. Here we were using 'p' or 'paths'
instead. Those names are very generic and not good for a "global-like"
object like the LookupPaths instance. And we also have 'path' variable,
and it's confusing to have 'path' and 'paths' in the same function that
are unrelated.
Also pass down LookupPaths* lower in the call stack, in preparation for
future changes.
Luca Boccassi [Sat, 12 Mar 2022 21:16:32 +0000 (21:16 +0000)]
Add tests and documentation for all remaining sandboxing in user manager
Luca Boccassi [Thu, 17 Mar 2022 23:37:29 +0000 (23:37 +0000)]
core: insist on sandboxing if ExtensionImages/Directories are configured
Same as other image mounting in the namespace
Yu Watanabe [Tue, 8 Mar 2022 05:24:48 +0000 (14:24 +0900)]
sd-device: shorten code a bit
Yu Watanabe [Thu, 10 Mar 2022 10:03:23 +0000 (19:03 +0900)]
sd-device-enumerator: fix typo: contolC -> controlC
Also shorten code a bit.
Yu Watanabe [Sat, 5 Mar 2022 00:43:20 +0000 (09:43 +0900)]
sort-util: add missing parens
With this, we can call e.g.
```
typesafe_qsort(buf + m, n - m, comp);
```
Lennart Poettering [Fri, 18 Mar 2022 08:23:01 +0000 (09:23 +0100)]
Merge pull request #22754 from mrc0mmand/creds_dir_specifier
core: add %d specifier for the $CREDENTIALS_DIRECTORY
Michael Biebl [Thu, 17 Mar 2022 22:53:03 +0000 (23:53 +0100)]
tree-wide: fix duplicated words
the the
in in
not not
we we
Yu Watanabe [Thu, 17 Mar 2022 22:38:35 +0000 (07:38 +0900)]
Merge pull request #22752 from yuwata/udev-ctrl-manage-sender-pids
udev: enable Delegate=
Luca Boccassi [Thu, 17 Mar 2022 21:59:29 +0000 (21:59 +0000)]
Merge pull request #22774 from poettering/nspawn-uidmap-fix
nspawn: uidmap mount fix
Lennart Poettering [Thu, 17 Mar 2022 14:01:11 +0000 (15:01 +0100)]
homed: permit inodes owned by UID_MAPPED_ROOT to be created in $HOME
If people use nspawn in their $HOME we should allow this inodes owned by
this special UID to be created temporarily, so that UID mapped nspawn
containers just work.
Lennart Poettering [Thu, 17 Mar 2022 12:46:12 +0000 (13:46 +0100)]
nspawn: make sure host root can write to the uidmapped mounts we prepare for the container payload
When using user namespaces in conjunction with uidmapped mounts, nspawn
so far set up two uidmappings:
1. One that is used for the uidmapped mount and that maps the UID range
0…65535 on the backing fs to some high UID range X…X+65535 on the
uidmapped fs. (Let's call this mapping the "mount mapping")
2. One that is used for the userns namespace the container payload
processes run in, that maps X…X+65535 back to 0…65535. (Let's call
this one the "process mapping").
These mappings hence are pretty much identical, one just moves things up
and one back down. (Reminder: we do all this so that the processes can
run under high UIDs while running off file systems that require no
recursive chown()ing, i.e. we want processes with high UID range but
files with low UID range.)
This creates one problem, i.e. issue #20989: if nspawn (which runs as
host root, i.e. host UID 0) wants to add inodes to the uidmapped mount
it can't do that, since host UID 0 is not defined in the mount mapping
(only the X…X+65536 range is, after all, and X > 0), and processes whose
UID is not mapped in a uidmapped fs cannot create inodes in it since
those would be owned by an unmapped UID, which then triggers
the famous EOVERFLOW error.
Let's fix this, by explicitly including an entry for the host UID 0 in
the mount mapping. Specifically, we'll extend the mount mapping to map
UID
2147483646 (which is INT32_MAX-1, see code for an explanation why I
picked this one) of the backing fs to UID 0 on the uidmapped fs. This
way nspawn can creates inode on the uidmapped as it likes (which will
then actually be owned by UID
2147483646 on the backing fs), and as it
always did. Note that we do *not* create a similar entry in the process
mapping. Thus any files created by nspawn that way (and not chown()ed to
something better) will appear as unmapped (i.e. as overflowuid/"nobody")
in the container payload. And that's good. Of course, the latter is
mostly theoretic, as nspawn should generally chown() the inodes it
creates to UID ranges that actually make sense for the container (and we
generally already do this correctly), but it#s good to know that we are
safe here, given we might accidentally forget to chown() some inodes we
create.
Net effect: the two mappings will not be identical anymore. The mount
mapping has one entry more, and the only reason it exists is so that
nspawn can access the uidmapped fs reasonably independently from any
process mapping.
Fixes: #20989
Lennart Poettering [Thu, 17 Mar 2022 11:03:03 +0000 (12:03 +0100)]
base-filesystem: use uid_is_valid() at one more place
Lennart Poettering [Thu, 17 Mar 2022 09:31:55 +0000 (10:31 +0100)]
nspawn: if we refuse to operate on some directory, explain why
(Also, some refactoring to use safer path_join())
Lennart Poettering [Thu, 17 Mar 2022 09:02:41 +0000 (10:02 +0100)]
nspawn: make more stuff const
And if we make it const, we can also make it static.
Lennart Poettering [Wed, 16 Mar 2022 17:42:51 +0000 (18:42 +0100)]
nspawn: rebreak all comments in outer_child()
David [Thu, 17 Mar 2022 17:31:54 +0000 (17:31 +0000)]
Changed wording in systemd-debug-generator manpage
Frantisek Sumsal [Thu, 17 Mar 2022 15:31:07 +0000 (16:31 +0100)]
core: add %d specifier for the $CREDENTIALS_DIRECTORY
Resolves: #22549
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.
Lennart Poettering [Thu, 17 Mar 2022 15:24:23 +0000 (16:24 +0100)]
update TODO
Frantisek Sumsal [Tue, 15 Mar 2022 20:05:58 +0000 (21:05 +0100)]
core: drop an unnecessary initialization
Yu Watanabe [Wed, 16 Mar 2022 11:46:49 +0000 (20:46 +0900)]
udev: run the main process, workers, and spawned commands in /udev subcgroup
And enable cgroup delegation for udevd.
Then, processes invoked through ExecReload= are assigned .control
subcgroup, and they are not killed by cg_kill().
Fixes #16867 and #22686.
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.
Yu Watanabe [Wed, 16 Mar 2022 16:44:31 +0000 (01:44 +0900)]
repart: use assert() when no state is changed
Yu Watanabe [Wed, 16 Mar 2022 18:42:41 +0000 (03:42 +0900)]
core: ExecContext::restrict_filesystems is set of string
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
Yu Watanabe [Tue, 15 Mar 2022 07:14:07 +0000 (16:14 +0900)]
timedate: use cleanup attribute at one more place
Yu Watanabe [Tue, 15 Mar 2022 12:12:40 +0000 (21:12 +0900)]
Revert "udev: do not kill "udevadm control" process in the same cgroup"
This reverts commit
ccadf9ac0d6d206767294b3f96f41eb42b48d1b0.
The fix is not insufficient. See #22686.
Yu Watanabe [Wed, 16 Mar 2022 12:18:57 +0000 (21:18 +0900)]
sd-radv: fix indentation
Yu Watanabe [Wed, 16 Mar 2022 12:16:54 +0000 (21:16 +0900)]
sd-radv: do not use iterater outside of the loop
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.
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.
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
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
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
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
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
Lennart Poettering [Wed, 16 Mar 2022 10:00:27 +0000 (11:00 +0100)]
NEWS: add entry announcing PCR change
Lennart Poettering [Wed, 16 Mar 2022 09:50:34 +0000 (10:50 +0100)]
man: only document new PCR 12
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
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]
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.
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)
Lennart Poettering [Wed, 16 Mar 2022 15:31:24 +0000 (16:31 +0100)]
docs: document the user.delegate 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.
Jan Janssen [Wed, 16 Mar 2022 10:05:13 +0000 (11:05 +0100)]
test-journal-syslog: Add some valid priority cases
Jan Janssen [Mon, 14 Mar 2022 09:32:48 +0000 (10:32 +0100)]
test: Use C11 UTF-16 string literal
Jan Janssen [Mon, 14 Mar 2022 09:37:27 +0000 (10:37 +0100)]
test: Use TEST macros in more places
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.
Lennart Poettering [Wed, 16 Mar 2022 10:33:27 +0000 (11:33 +0100)]
update TODO
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
Luca Boccassi [Tue, 15 Mar 2022 22:44:58 +0000 (22:44 +0000)]
Merge pull request #22746 from yuwata/home-cleanups
home: two cleanups
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
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
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
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.
Grigori Goronzy [Fri, 18 Feb 2022 11:51:00 +0000 (12:51 +0100)]
cryptenroll: add TPM2 PIN documentation
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.
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.
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
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
Grigori Goronzy [Fri, 11 Mar 2022 23:51:21 +0000 (00:51 +0100)]
hmac/sha256: move size define to sha256.h
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.
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.
Yu Watanabe [Mon, 14 Mar 2022 07:01:23 +0000 (16:01 +0900)]
home: use open_image_file() helper at one more place
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
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
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.
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
```
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.
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.
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
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>
Frantisek Sumsal [Mon, 14 Mar 2022 17:43:03 +0000 (18:43 +0100)]
journal: make --reverse affect --list-boots
Fixes: #16274
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
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
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
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.
Lennart Poettering [Mon, 14 Mar 2022 10:53:35 +0000 (11:53 +0100)]
docs: document how we usually define enums
Lennart Poettering [Mon, 14 Mar 2022 10:52:30 +0000 (11:52 +0100)]
hostnamed: update chassis table to SMBIOS 3.5
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
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
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>
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
Lennart Poettering [Mon, 14 Mar 2022 13:48:17 +0000 (14:48 +0100)]
test: add test case for DECIMAL_STR_MAX()
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.
Lennart Poettering [Mon, 14 Mar 2022 11:02:42 +0000 (12:02 +0100)]
test: add test for DECIMAL_STR_WIDTH()
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
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.
Franck Bui [Mon, 14 Mar 2022 17:05:49 +0000 (18:05 +0100)]
copy: use FLAGS_SET() in copy_xattr()
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.
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.
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
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
Frantisek Sumsal [Sun, 13 Mar 2022 19:32:18 +0000 (20:32 +0100)]
test: extend format-table tests with negative numbers
Yu Watanabe [Sun, 13 Mar 2022 13:33:27 +0000 (22:33 +0900)]
man: replace full stop with colon
Fixes #22724.
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
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.
Yu Watanabe [Sun, 13 Mar 2022 09:34:39 +0000 (18:34 +0900)]
doc: fix error code
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