]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
4 years agosd-bus: remove unnecessary variable 18890/head
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 15:36:37 +0000 (16:36 +0100)] 
sd-bus: remove unnecessary variable

Also use structued initialization in one more place, use '\0' for NUL bytes,
and move variable to the right block (the code was OK, but it is strange to
have 'char *value' defined in a different scope then 'size_t value_allocated').

4 years agodocs: document fuzzer variables
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 15:06:15 +0000 (16:06 +0100)] 
docs: document fuzzer variables

4 years agofuzz-main: allow the number of runs to be overridden
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 15:01:50 +0000 (16:01 +0100)] 
fuzz-main: allow the number of runs to be overridden

This is useful when debugging.

4 years agosd-bus: fix memleak in failure path in bus_match_parse()
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 14:16:18 +0000 (15:16 +0100)] 
sd-bus: fix memleak in failure path in bus_match_parse()

4 years agofuzz-bus-match: add example from bugzilla#1935084
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 16:10:53 +0000 (17:10 +0100)] 
fuzz-bus-match: add example from bugzilla#1935084

The fuzzer seems to have no trouble with this sample. It seems that the
problem reported in the bug is not caused by the match parsing code. But
let's add the sample just in case.

https://bugzilla.redhat.com/show_bug.cgi?id=1935084

4 years agofuzz-bus-match: new fuzzer
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 20:29:48 +0000 (21:29 +0100)] 
fuzz-bus-match: new fuzzer

This fuzzer is based on test-bus-match. Even the initial corpus is
derived entirely from it.

https://bugzilla.redhat.com/show_bug.cgi?id=1935084 shows an crash
in bus_match_parse(). I checked the coverage stats on oss-fuzz, and
sadly existing fuzzing did not cover this code at all.

4 years agotest-bus-match: small modernization
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 20:25:14 +0000 (21:25 +0100)] 
test-bus-match: small modernization

4 years agosd-bus: avoid alloc and missing oom check in bus_match_dump()
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 20:22:47 +0000 (21:22 +0100)] 
sd-bus: avoid alloc and missing oom check in bus_match_dump()

4 years agosd-bus: let bus_match_dump() take an output file
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 20:20:00 +0000 (21:20 +0100)] 
sd-bus: let bus_match_dump() take an output file

4 years agosd-bus: fix memstream buffer extraction
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 20:19:02 +0000 (21:19 +0100)] 
sd-bus: fix memstream buffer extraction

I'm getting the following error under valgrind:

==305970== Invalid free() / delete / delete[] / realloc()
==305970==    at 0x483E9F1: free (vg_replace_malloc.c:538)
==305970==    by 0x4012CD: mfree (alloc-util.h:48)
==305970==    by 0x4012EF: freep (alloc-util.h:83)
==305970==    by 0x4017F4: LLVMFuzzerTestOneInput (fuzz-bus-match.c:58)
==305970==    by 0x401A58: main (fuzz-main.c:39)
==305970==  Address 0x59972f0 is 0 bytes inside a block of size 8,192 free'd
==305970==    at 0x483FCE4: realloc (vg_replace_malloc.c:834)
==305970==    by 0x4C986F7: _IO_mem_finish (in /usr/lib64/libc-2.33.so)
==305970==    by 0x4C8F5E0: fclose@@GLIBC_2.2.5 (in /usr/lib64/libc-2.33.so)
==305970==    by 0x49D2CDB: fclose_nointr (fd-util.c:108)
==305970==    by 0x49D2D3D: safe_fclose (fd-util.c:124)
==305970==    by 0x4A4BCCC: fclosep (fd-util.h:41)
==305970==    by 0x4A4E00F: bus_match_to_string (bus-match.c:859)
==305970==    by 0x4016C2: LLVMFuzzerTestOneInput (fuzz-bus-match.c:58)
==305970==    by 0x401A58: main (fuzz-main.c:39)
==305970==  Block was alloc'd at
==305970==    at 0x483FAE5: calloc (vg_replace_malloc.c:760)
==305970==    by 0x4C98787: open_memstream (in /usr/lib64/libc-2.33.so)
==305970==    by 0x49D56D6: open_memstream_unlocked (fileio.c:97)
==305970==    by 0x4A4DEC5: bus_match_to_string (bus-match.c:859)
==305970==    by 0x4016C2: LLVMFuzzerTestOneInput (fuzz-bus-match.c:58)
==305970==    by 0x401A58: main (fuzz-main.c:39)
==305970==

So the fclose() which is called from _cleanup_fclose_ clearly reallocates the
buffer (maybe to save memory?). open_memstream(3) says:

  The locations referred to by these pointers are updated each time the
  stream is flushed (fflush(3)) and  when the stream is closed (fclose(3)).

This seems to mean that we should close the stream first before grabbing the
buffer pointer.

4 years agofuzz-bus-message: move sources to src/libsystemd/
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 13:40:55 +0000 (14:40 +0100)] 
fuzz-bus-message: move sources to src/libsystemd/

There's also fuzz-bus-label, but despite the name, it tests code that is in
src/shared/, so it shouldn't move.

4 years agobus/bus-match: use "ret_" prefix for output parameters
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 13:35:46 +0000 (14:35 +0100)] 
bus/bus-match: use "ret_" prefix for output parameters

4 years agobus/bus-match: inline iterator variable declarations
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 13:33:42 +0000 (14:33 +0100)] 
bus/bus-match: inline iterator variable declarations

4 years agoformat-table: fix potentail memleak and invalid-free
Yu Watanabe [Sat, 6 Mar 2021 01:10:31 +0000 (10:10 +0900)] 
format-table: fix potentail memleak and invalid-free

4 years agofstab-generator: fix typo
Yu Watanabe [Sat, 6 Mar 2021 01:12:55 +0000 (10:12 +0900)] 
fstab-generator: fix typo

4 years agoudev: run link_update() with increased retry count in second invocation
Michal Sekletar [Thu, 4 Mar 2021 16:35:22 +0000 (17:35 +0100)] 
udev: run link_update() with increased retry count in second invocation

In PR #17431 we have introduced retry loop in link_update() in order to
maximize the chance that we end up with correct target when there are
multiple contenders for given symlink.

Number of iterations in retry loop is either 1 or
LINK_UPDATE_MAX_RETRIES, depending on the value of 'initialized' db
flag. When device appears for the first time we need to set the
flag before calling link_update() via update_devnode() for the second
time to make sure we run the second invocation with higher retry loop
counter.

4 years agoMerge pull request #18896 from poettering/no-localhost-ipv6
Yu Watanabe [Sat, 6 Mar 2021 02:28:38 +0000 (11:28 +0900)] 
Merge pull request #18896 from poettering/no-localhost-ipv6

if ipv6 is turned off, don't synthesize localhost as ::1 ever

4 years agotest: disable at_exit LSan check for dbus.service
Frantisek Sumsal [Fri, 5 Mar 2021 22:20:45 +0000 (23:20 +0100)] 
test: disable at_exit LSan check for dbus.service

When running integration tests under sanitizers D-Bus fails to
shutdown cleanly, causing unnecessary noise in the logs:

```
dbus-daemon[272]: ==272==LeakSanitizer has encountered a fatal error.
dbus-daemon[272]: ==272==HINT: For debugging, try setting environment variable LSAN_OPTIONS=verbosity=1:log_threads=1
dbus-daemon[272]: ==272==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc)
```

Since we're not "sanitizing" D-Bus anyway let's disable LSan's at_exit
check for the dbus.service to get rid of this error.

4 years agodissect: avoid overflow access by NULLSTR_FOREACH
Luca Boccassi [Fri, 5 Mar 2021 20:19:44 +0000 (20:19 +0000)] 
dissect: avoid overflow access by NULLSTR_FOREACH

NULLSTR_FOREACH expects two terminating NULs, but the joined string
for extension-release.d only had the canonical one.
Use a placeholder when joining and fix it manually.

4 years agosocket-util: refuse "all" and "default" as valid ifnames
Lennart Poettering [Fri, 5 Mar 2021 19:33:15 +0000 (20:33 +0100)] 
socket-util: refuse "all" and "default" as valid ifnames

Let's avoid collisions with special sysctls.

4 years agoMerge pull request #18875 from keszybz/localed-error
Luca Boccassi [Fri, 5 Mar 2021 22:50:41 +0000 (22:50 +0000)] 
Merge pull request #18875 from keszybz/localed-error

localed: return error when setting a non-installed keymap

4 years agoUpdate 60-sensor.hwdb (#18884)
ChopperRob [Fri, 5 Mar 2021 21:11:26 +0000 (22:11 +0100)] 
Update 60-sensor.hwdb (#18884)

added support for the Lenovo IdeaPad D330-10IGM screen orientation

4 years agoresolved: never return ::1 when localhost or local hostname is resolved while IPv6... 18896/head
Lennart Poettering [Fri, 5 Mar 2021 17:47:10 +0000 (18:47 +0100)] 
resolved: never return ::1 when localhost or local hostname is resolved while IPv6 is off in the kernel

Fixes: #18812
4 years agosocket-util: add helper for checking if IPv6 is enabled
Lennart Poettering [Fri, 5 Mar 2021 19:37:24 +0000 (20:37 +0100)] 
socket-util: add helper for checking if IPv6 is enabled

4 years agosocket-util: cache result of socket_ipv6_is_supported()
Lennart Poettering [Fri, 5 Mar 2021 17:46:31 +0000 (18:46 +0100)] 
socket-util: cache result of socket_ipv6_is_supported()

And while we are at it, log about unexpected errors.

4 years agobasic: move shared/sysctl-util.[ch] → basic/
Lennart Poettering [Fri, 5 Mar 2021 19:39:58 +0000 (20:39 +0100)] 
basic: move shared/sysctl-util.[ch] → basic/

This is self-contained ans allows us later to use the provided APIs from
other code in src/basic/

4 years agosysctl-util: use read_full_virtual_file() for reading sysctls
Lennart Poettering [Fri, 5 Mar 2021 19:34:16 +0000 (20:34 +0100)] 
sysctl-util: use read_full_virtual_file() for reading sysctls

Given these files are part of procfs, let's use the correct API calls
for reading them.

This changes one occasion of read_one_line_file() to
read_full_virtual_file(), which superficially is a different thing, but
shouldn't actually be a difference, since sysctls can't be longer than
4K anyway, and the piecemeal logic behind read_one_line_file() cannot
work with the special semantics of procfs anyway.

4 years agoMerge pull request #18852 from yuwata/tree-wide-use-UINT64_MAX
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 16:51:34 +0000 (17:51 +0100)] 
Merge pull request #18852 from yuwata/tree-wide-use-UINT64_MAX

tree-wide: use UINT64_MAX or friends

4 years agoMerge pull request #18885 from yuwata/udev-fix-import-program-rhbz-1935062
Frantisek Sumsal [Fri, 5 Mar 2021 13:19:21 +0000 (14:19 +0100)] 
Merge pull request #18885 from yuwata/udev-fix-import-program-rhbz-1935062

udev: fix importing program result

4 years agotest: add test for IMPORT{program}= udev rule 18885/head
Yu Watanabe [Fri, 5 Mar 2021 02:32:49 +0000 (11:32 +0900)] 
test: add test for IMPORT{program}= udev rule

4 years agotest: merge udev tests
Yu Watanabe [Fri, 5 Mar 2021 09:36:04 +0000 (18:36 +0900)] 
test: merge udev tests

4 years agoMerge pull request #18873 from yuwata/use-config-parse-many-and-null-or-empty-path
Yu Watanabe [Fri, 5 Mar 2021 02:34:54 +0000 (11:34 +0900)] 
Merge pull request #18873 from yuwata/use-config-parse-many-and-null-or-empty-path

tree-wide: use config_parse_many() and null_or_empty_path()

4 years agodhcp-server: also append specified additional options and vendor specific option...
Yu Watanabe [Thu, 4 Mar 2021 08:51:25 +0000 (17:51 +0900)] 
dhcp-server: also append specified additional options and vendor specific option on DHCP_OFFER

Fixes #15780.

4 years agoudev: also not unescape command result on debug log
Yu Watanabe [Fri, 5 Mar 2021 02:31:30 +0000 (11:31 +0900)] 
udev: also not unescape command result on debug log

4 years agoudev: do not unescape command result
Yu Watanabe [Fri, 5 Mar 2021 00:37:24 +0000 (09:37 +0900)] 
udev: do not unescape command result

This fixes a bug introduced by 28a5065149c31a8689738ddcd1100502371a7c34.

Fixes RHBZ#1935062 (https://bugzilla.redhat.com/show_bug.cgi?id=1935062).

4 years agostrv: introduce strv_split_newlines_full()
Yu Watanabe [Fri, 5 Mar 2021 00:29:57 +0000 (09:29 +0900)] 
strv: introduce strv_split_newlines_full()

4 years agohwdb: add fuzz for Dell Latitude E7470 (#18876)
Alastair Pharo [Fri, 5 Mar 2021 00:10:54 +0000 (11:10 +1100)] 
hwdb: add fuzz for Dell Latitude E7470 (#18876)

4 years agoinstall: use null_or_empty_path() 18873/head
Yu Watanabe [Thu, 4 Mar 2021 08:21:22 +0000 (17:21 +0900)] 
install: use null_or_empty_path()

4 years agonetwork: use null_or_empty_path()
Yu Watanabe [Thu, 4 Mar 2021 08:25:22 +0000 (17:25 +0900)] 
network: use null_or_empty_path()

This also drops unnecessary fseek().

4 years agoudev/net: use null_or_empty_path()
Yu Watanabe [Thu, 4 Mar 2021 08:10:08 +0000 (17:10 +0900)] 
udev/net: use null_or_empty_path()

4 years agoudev/net: make .link files support drop-in config
Yu Watanabe [Thu, 4 Mar 2021 07:48:57 +0000 (16:48 +0900)] 
udev/net: make .link files support drop-in config

4 years agocopy: move sync_rights() to copy.c and rename copy_rights()
Lennart Poettering [Thu, 4 Mar 2021 17:52:10 +0000 (18:52 +0100)] 
copy: move sync_rights() to copy.c and rename copy_rights()

It's so similar to copy_access(), hence let's move it over and rename it
in similar style to the rest of the functions.

No change in behaviour, just moving things over.

4 years agocopy: simplify error paths when creating temporary files
Lennart Poettering [Mon, 1 Feb 2021 16:50:56 +0000 (17:50 +0100)] 
copy: simplify error paths when creating temporary files

4 years agoefi: introduce UINT32_MAX and UINT64_MAX 18852/head
Yu Watanabe [Wed, 3 Mar 2021 04:40:28 +0000 (13:40 +0900)] 
efi: introduce UINT32_MAX and UINT64_MAX

4 years agotree-wide: use UINT64_MAX or friends
Yu Watanabe [Wed, 3 Mar 2021 04:07:10 +0000 (13:07 +0900)] 
tree-wide: use UINT64_MAX or friends

4 years agotable: drop last SIZE_MAX from table_set_sort() and table_set_display()
Yu Watanabe [Wed, 3 Mar 2021 05:01:02 +0000 (14:01 +0900)] 
table: drop last SIZE_MAX from table_set_sort() and table_set_display()

4 years agotree-wide: use usec_add() and usec_sub_unsigned()
Yu Watanabe [Wed, 3 Mar 2021 03:56:52 +0000 (12:56 +0900)] 
tree-wide: use usec_add() and usec_sub_unsigned()

4 years agojournal: make namespace invocation also support drop-in config
Yu Watanabe [Thu, 4 Mar 2021 07:38:18 +0000 (16:38 +0900)] 
journal: make namespace invocation also support drop-in config

4 years agorun: tweak algorithm for generating unit name from dbus unique name
Lennart Poettering [Thu, 4 Mar 2021 15:23:46 +0000 (16:23 +0100)] 
run: tweak algorithm for generating unit name from dbus unique name

This reverts behaviour of systemd-run's unit name generation to the
status quo ante of #18871: we chop off the ":1." prefix if we can.
However, to address the issue that the unique name can overrun we then
do what #18871 did as fallback: only chop off the ":" prefix.

This way we should have pretty names that look like they always looked
in the common case, but in the case of a unique name overrun we still
will have names that work.

Follow-up for #18871

4 years agorm-rf: fix up chmod in the _cleanup_ rm_rf() destructors
Lennart Poettering [Thu, 4 Mar 2021 15:03:07 +0000 (16:03 +0100)] 
rm-rf: fix up chmod in the _cleanup_ rm_rf() destructors

REMOVE_CHMOD is necessary to remove files/dirs that are owned by us but
have an access mode that would not allow us to remove them. In generic
destructor calls for use with `_cleanup_` that are "fire-and-forget"
style we should make use of that, to maximize the chance we can actually
remove the files/dirs.

(Also, add in REMOVE_MISSING_OK. Just because prettier, we ignore the
return codes anyway, but it' a bit nicer to ignore a bit fewer errors.)

4 years agoman: document how to use --network-interface= during boot
Lennart Poettering [Wed, 3 Mar 2021 16:28:09 +0000 (17:28 +0100)] 
man: document how to use --network-interface= during boot

Fixes: #18793
4 years agofileio: minor read_full_stream_full() optimization
Lennart Poettering [Thu, 4 Mar 2021 14:59:46 +0000 (15:59 +0100)] 
fileio: minor read_full_stream_full() optimization

If we shall read as much of a file/stream as we can, then it makes sense
to use the full malloc()ed memory, not just the part we asked for.

4 years agoMerge pull request #18615 from xry111/private-ipc-1
Lennart Poettering [Thu, 4 Mar 2021 17:04:28 +0000 (18:04 +0100)] 
Merge pull request #18615 from xry111/private-ipc-1

New directives PrivateIPC and IPCNamespacePath

4 years agotrans_time sec is int32,it will overflow if local system time is later than 2038.
caoxia [Thu, 28 Jan 2021 12:50:08 +0000 (20:50 +0800)] 
trans_time sec is int32,it will overflow if local system time is later than 2038.

4 years agoMerge pull request #18840 from yuwata/libudev-monitor-tiny-cleanup
Lennart Poettering [Thu, 4 Mar 2021 16:23:17 +0000 (17:23 +0100)] 
Merge pull request #18840 from yuwata/libudev-monitor-tiny-cleanup

io-util: introduce ppoll_usec()

4 years agoinstall: include OS headers before our own definition
Lennart Poettering [Thu, 4 Mar 2021 15:06:06 +0000 (16:06 +0100)] 
install: include OS headers before our own definition

Doesn't matter much, but matches more our usual coding style where our
definition are done after all headers provided by the OS are included.

4 years agoMerge pull request #18773 from yuwata/network-move-several-functions
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 11:25:59 +0000 (12:25 +0100)] 
Merge pull request #18773 from yuwata/network-move-several-functions

network: move several functions

4 years agoshared/kbd-util: simplify suffix stripping 18875/head
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 10:52:25 +0000 (11:52 +0100)] 
shared/kbd-util: simplify suffix stripping

It only came to me now that this can be prettified.

4 years agolocaled: refuse to set a keymap which is not installed
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 10:27:05 +0000 (11:27 +0100)] 
localed: refuse to set a keymap which is not installed

In https://bugzilla.redhat.com/show_bug.cgi?id=1933873 a keymap was set without
the package that provides it being installed (it2 is in kbd-legacy, which is
not installed by default). Setting a non-installed keymap is problematic,
because it results in nasty failures afterward (*). So let's to the same as
e.g. for locale data, and refuse a setting if the definition doesn't exists in
the filesystem.

The implementation using nftw() is not the most efficient, but I think it's OK
in this case. This is definitely not in any kind of hot path, and I prefer not
to duplicate the filename manipulation logic in a second function.

(*) If the keymap is not found, vconsole-setup.service will fail.
dracut-cmdline-ask.service has Requires=vconsole-setup.service, so it will also
fail, and this breaks boot. dracut-cmdline-ask.service having a hard dependency
is appropriate though: we sadly don't display what the keymap is, and with a wrong
keymap, any attempts to enter a password are likely to fail.

4 years agoshared/kbd-util: return error on resource errors
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 09:50:32 +0000 (10:50 +0100)] 
shared/kbd-util: return error on resource errors

I guess we should still not fail on failure to access a directory and such.

4 years agoshared/kbd-util: fix return value confusion with nftw()
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 09:42:53 +0000 (10:42 +0100)] 
shared/kbd-util: fix return value confusion with nftw()

We would return a real error sometimes from the callback, and FTW_STOP other
times. Because of FTW_ACTIONRETVAL, everything except FTW_STOP would be
ignored. I don't think using FTW_ACTIONRETVAL is useful.

nftw() can only be used meaningfully with errno. Even if we return a proper
value ourselves from the callback, it will be propagated as a return value from
nftw(), but there is no way to distinguish this from a value generated by
nftw() itself, which is -1/-EPERM on error. So let's set errno ourselves so the
caller can at least look at that.

The code still ignores all errors.

4 years agorun: update dbus unique names check
Anita Zhang [Thu, 4 Mar 2021 01:25:40 +0000 (17:25 -0800)] 
run: update dbus unique names check

Some code in systemd-run checks that a bus's unique name must start with
`:1.`. However the dbus specification on unique connection names only specifies
that it must begin with a colon. And the freedesktop/dbus implementation allows
allows unique names to go up to `:INT_MAX.INT_MAX`. So update the
current check to only look for a colon at the beginning.

4 years agoMove basic/kbd-util to shared/
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 08:39:29 +0000 (09:39 +0100)] 
Move basic/kbd-util to shared/

It is (or should be used) in localectl, localed, and a few other places,
no reason to keep it in basic/.

4 years agocore: fix mtime calculation of dropin files
Zbigniew Jędrzejewski-Szmek [Wed, 3 Mar 2021 23:36:24 +0000 (00:36 +0100)] 
core: fix mtime calculation of dropin files

Nominally, the bug was in unit_load_dropin(), which just took the last mtime
instead of calculating the maximum. But instead of adding code to wrap the
loop, this patch goes in the other direction.

All (correct) callers of config_parse() followed a very similar pattern to
calculate the maximum mtime. So let's simplify things by making config_parse()
assume that mtime is initialized and update it to the maximum. This makes all
the callers that care about mtime simpler and also fixes the issue in
unit_load_dropin().

config_parse_many_nulstr() and config_parse_many() are different, because it
makes sense to call them just once, and current ret_mtime behaviour make sense.

Fixes #17730, https://bugzilla.redhat.com/show_bug.cgi?id=1933137.

4 years agocoredumpctl: show container hostame
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 00:09:42 +0000 (01:09 +0100)] 
coredumpctl: show container hostame

Fixes #18321. I don't see any point in showing the hostname in
_HOSTNAME: it's either the same as COREDUMP_HOSTNAME or irrelevant.

4 years agoMerge pull request #18864 from poettering/fsync-tweaks
Yu Watanabe [Thu, 4 Mar 2021 05:51:10 +0000 (14:51 +0900)] 
Merge pull request #18864 from poettering/fsync-tweaks

make sure fsync_directory_of_file() + fsync_full() work on more inode types reasonably

4 years agorm-rf: fstatat() might fail if containing dir has limited access mode, patch that too
Lennart Poettering [Tue, 26 Jan 2021 15:47:07 +0000 (16:47 +0100)] 
rm-rf: fstatat() might fail if containing dir has limited access mode, patch that too

4 years agofs-util: when opening arbitrary inodes, better use O_NONBLOCK
Lennart Poettering [Mon, 1 Feb 2021 16:11:26 +0000 (17:11 +0100)] 
fs-util: when opening arbitrary inodes, better use O_NONBLOCK

In case this is a device node where opening might block.

4 years agogpt: generalize validator for GPT partition labels
Lennart Poettering [Wed, 6 Jan 2021 14:50:14 +0000 (15:50 +0100)] 
gpt: generalize validator for GPT partition labels

This adds a proper validator function.

No change in behaviour, just some minor refactoring (this should be
useful elsewhere later on though)

4 years agofs-util: port open_parent() to path_extract_directory()
Lennart Poettering [Mon, 1 Feb 2021 16:04:47 +0000 (17:04 +0100)] 
fs-util: port open_parent() to path_extract_directory()

4 years agopo: Added translation using Weblate (Sinhala)
Hela Basa [Wed, 3 Mar 2021 20:54:21 +0000 (21:54 +0100)] 
po: Added translation using Weblate (Sinhala)

Co-authored-by: Hela Basa <r45xveza@pm.me>
4 years agotree-wide: use ppoll_usec() 18840/head
Yu Watanabe [Tue, 2 Mar 2021 19:11:45 +0000 (04:11 +0900)] 
tree-wide: use ppoll_usec()

4 years agoio-util: introduce ppoll_usec() helper function
Yu Watanabe [Tue, 2 Mar 2021 18:55:22 +0000 (03:55 +0900)] 
io-util: introduce ppoll_usec() helper function

4 years agolibudev: shorten code a bit
Yu Watanabe [Tue, 2 Mar 2021 08:17:16 +0000 (17:17 +0900)] 
libudev: shorten code a bit

fd_wait_for_event() or ppoll() does not return -EAGAIN.

4 years agofs-util: handle gracefully if fsync_full() is called on block devices and such 18864/head
Lennart Poettering [Fri, 26 Feb 2021 21:44:39 +0000 (22:44 +0100)] 
fs-util: handle gracefully if fsync_full() is called on block devices and such

4 years agofs-util: allow fsync_directory_of_file() on directories too
Lennart Poettering [Wed, 3 Feb 2021 19:40:40 +0000 (20:40 +0100)] 
fs-util: allow fsync_directory_of_file() on directories too

(in which case the parent dir is synced)

4 years agoRemount /dev/mqueue in unshared mount namespace for PrivateIPC 18615/head
Xℹ Ruoyao [Wed, 3 Mar 2021 16:08:09 +0000 (00:08 +0800)] 
Remount /dev/mqueue in unshared mount namespace for PrivateIPC

4 years agoNew directives PrivateIPC and IPCNamespacePath
Xℹ Ruoyao [Tue, 16 Feb 2021 15:58:56 +0000 (23:58 +0800)] 
New directives PrivateIPC and IPCNamespacePath

4 years agoRefactor network namespace specific functions in generic helpers
Xℹ Ruoyao [Tue, 16 Feb 2021 12:49:15 +0000 (20:49 +0800)] 
Refactor network namespace specific functions in generic helpers

4 years agofuzz: add NetworkNamespacePath= into directives.service
Xℹ Ruoyao [Tue, 16 Feb 2021 12:58:03 +0000 (20:58 +0800)] 
fuzz: add NetworkNamespacePath= into directives.service

4 years agorules: Move ID_SMARTCARD_READER definition to a <70 configuration.
Vincent Pelletier [Sat, 27 Feb 2021 00:17:06 +0000 (00:17 +0000)] 
rules: Move ID_SMARTCARD_READER definition to a <70 configuration.

70-uaccess.rules sets the uaccess tag on devices with ID_SMARTCARD_READER
set, but it is set in 99-systemd.rules .
Move this to a 60-*.rules which already matches USB CCID class, factorising
the matching, so 70-uaccess.rules sets up these devices as expected.

4 years agonetwork: do not remove LLDP state file on failure 18773/head
Yu Watanabe [Wed, 3 Mar 2021 07:42:18 +0000 (16:42 +0900)] 
network: do not remove LLDP state file on failure

4 years agonetwork: use conservative_rename() at one more place
Yu Watanabe [Wed, 3 Mar 2021 07:34:51 +0000 (16:34 +0900)] 
network: use conservative_rename() at one more place

4 years agonetwork: remove DHCP lease and LLDP state file on link_free()
Yu Watanabe [Wed, 3 Mar 2021 07:31:28 +0000 (16:31 +0900)] 
network: remove DHCP lease and LLDP state file on link_free()

4 years agodhcp: use unlink_and_freep() in dhcp_lease_save()
Yu Watanabe [Wed, 3 Mar 2021 07:25:54 +0000 (16:25 +0900)] 
dhcp: use unlink_and_freep() in dhcp_lease_save()

4 years agonetwork: move manager_{rtnl,udev}_process_link() to networkd-link.[ch]
Yu Watanabe [Sun, 21 Feb 2021 06:51:51 +0000 (15:51 +0900)] 
network: move manager_{rtnl,udev}_process_link() to networkd-link.[ch]

4 years agonetwork: drop unnecessary {}
Yu Watanabe [Sun, 21 Feb 2021 06:45:00 +0000 (15:45 +0900)] 
network: drop unnecessary {}

4 years agonetwork: minor style fixes
Yu Watanabe [Sun, 21 Feb 2021 06:26:15 +0000 (15:26 +0900)] 
network: minor style fixes

4 years agonetwork: use unlink_and_freep() cleanup functions
Yu Watanabe [Sun, 21 Feb 2021 06:21:12 +0000 (15:21 +0900)] 
network: use unlink_and_freep() cleanup functions

This also makes state files not removed on failure.

4 years agonetwork: move state file related functions to networkd-state-file.[ch]
Yu Watanabe [Sun, 21 Feb 2021 05:23:04 +0000 (14:23 +0900)] 
network: move state file related functions to networkd-state-file.[ch]

4 years agofstab-generator: add new root=tmpfs option
Lennart Poettering [Tue, 2 Mar 2021 17:57:04 +0000 (18:57 +0100)] 
fstab-generator: add new root=tmpfs option

It's useful to be able to combine a regular /usr/ file system with a
tmpfs as root, for an OS that boots up in volatile mode on every single
boot.  Let's add explicit support for this via root=tmpfs.

Note the relationship to the existing systemd.volatile= option:

1. The kernel command line "root=/dev/… systemd.volatile=yes" will mount
   the specified root fs, and then hide everything at the top by
   overmounting it with a tmpfs, except for the /usr subtree.

2. The kernel command line "root=tmpfs mount.usr=/dev/…" otoh will mount
   a toot fs at the top (just like the case above), but will then mount
   the top-level dir of the fs specified in mount.usr= directly below
   it.

Or to say this differently: in the first case /usr/ from the physical
storage fs is going to become /usr/ of the hierarchy ultimately booted,
while in the second case / from the physical storage fs is going to
become /usr of the hierarchy booted.

Philosophically I figure systemd.volatile= is more an option for
"one-off" boots, while root=tmpfs is something to have as default mode
of operation for suitable images.

This is currently hard to test reasonably, since Dracut refuses to
accept root=tmpfs. This needs to be addressed separately though.

4 years agotime-util: simplify overflow check
Lennart Poettering [Tue, 2 Mar 2021 20:33:35 +0000 (21:33 +0100)] 
time-util: simplify overflow check

And don't rely on 2s complement.

4 years agoMerge pull request #18834 from poettering/path-extract
Luca Boccassi [Tue, 2 Mar 2021 19:22:53 +0000 (19:22 +0000)] 
Merge pull request #18834 from poettering/path-extract

Beef up path_extract_filename() a bit, and introduce path_extract_directory()

4 years agoutil: add helpers for generating colored check mark glyphs from bools
Lennart Poettering [Wed, 30 Dec 2020 20:49:10 +0000 (21:49 +0100)] 
util: add helpers for generating colored check mark glyphs from bools

4 years agotmpfile: port tempfn_*() to path_extract_*() 18834/head
Lennart Poettering [Fri, 26 Feb 2021 17:24:58 +0000 (18:24 +0100)] 
tmpfile: port tempfn_*() to path_extract_*()

4 years agomachinectl: make sure of path_extract_filename() returning O_DIRECTORY
Lennart Poettering [Tue, 23 Feb 2021 16:22:31 +0000 (17:22 +0100)] 
machinectl: make sure of path_extract_filename() returning O_DIRECTORY

4 years agopath-util: return O_DIRECTORY from path_extract_filename() when path ends in slash
Lennart Poettering [Tue, 23 Feb 2021 15:49:29 +0000 (16:49 +0100)] 
path-util: return O_DIRECTORY from path_extract_filename() when path ends in slash

Let's fine-tune the path_extract_filename() interface: on succes return
O_DIRECTORY as indicator that the input path was slash-suffixed, and
regular 0 otherwise. This is useful since in many cases it is useful to
filter out paths that must refer to dirs early on.

I opted for O_DIRECTORY instead of the following other ideas:

1. return -EISDIR: I think the function should return an extracted
   filename even when referring to an obvious dir, so this is not an
   option.

2. S_ISDIR, this was a strong contender, but I think O_DIRECTORY is a
   tiny bit nicer since quite likely we will go on and open the thing,
   maybe with openat(), and hence it's quite nice to be able to OR in
   the return value into the flags argument of openat().

3. A new enum defined with two values "dont-know" and
   "definitely-directory". But I figured this was unnecessary, given we
   have other options too, that reuse existing definitions for very
   similar purposes.

4 years agopath-util: add path_extract_directory(), to match path_extract_filename()
Lennart Poettering [Tue, 26 Jan 2021 11:28:23 +0000 (12:28 +0100)] 
path-util: add path_extract_directory(), to match path_extract_filename()

These two together are a lot like dirname() + basename() but have the
benefit that they return clear errors when one passes a special case
path to them where the extraction doesn't make sense, i.e. "", "/",
"foo", "foo/" and so on.

Sooner or later we should probably port all our uses of
dirname()/basename() over to this, to catch these special cases more
safely.

4 years agoman: document usage of SD_BUS_CREDS_AUGMENT
Luca Boccassi [Tue, 2 Mar 2021 11:12:09 +0000 (11:12 +0000)] 
man: document usage of SD_BUS_CREDS_AUGMENT

4 years agoMerge pull request #18841 from keszybz/a-bunch-of-man-page-updates
Lennart Poettering [Tue, 2 Mar 2021 10:03:44 +0000 (11:03 +0100)] 
Merge pull request #18841 from keszybz/a-bunch-of-man-page-updates

Two minor small man page updates