Commit Graph
39218 Commits
Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek 4bd035153b manager: add taint flag "support-ended"
In the welcome line, use NAME= as the fallback for PRETTY_NAME=.
PRETTY_NAME= doesn't have to be set, but NAME= should.

Example output:
---
Welcome to Fedora Linux 37 (Rawhide Prerelease)!

[  !!  ] This OS version (Fedora Linux 37 (Rawhide Prerelease)) is past its end-of-support date (1999-01-01)
Queued start job for default target graphical.target.
[  OK  ] Created slice system-getty.slice.
---
2022-07-10 14:33:52 +02:00
Yu Watanabe 0d609349ba resolve: introduce FORMAT_DNS_RCODE() macro
Fixes #23958.
2022-07-09 19:51:23 +09:00
Yu Watanabe 3857d367f0 sd-dhcp-client: fix log message 2022-07-09 11:44:25 +09:00
Yu Watanabe d5ad2ec1d4 network: drop redundant warning
If file is world readable, then `read_full_file_full()` will warn
about that.
2022-07-09 01:09:23 +01:00
Luca Boccassi b2e8f2d853 Merge pull request #23940 from yuwata/core-extract-first-word
core: fix error value in log_syntax()
2022-07-09 01:09:06 +01:00
Luca Boccassi 89f119b654 Merge pull request #23731 from bluca/bootctl_image
bootctl: add --root and --image
2022-07-08 21:59:16 +01:00
Evgeny Vereshchagin 686a0d387d Merge pull request #23954 from yuwata/resolve-overflow
resolve: fix heap-buffer-overflow
2022-07-08 23:39:31 +03:00
Yu Watanabe 325513bc77 resolve: mdns: calculate required packet size to store questions and authorities
Otherwise, if we have many cached entries or pending transactions with
TYPE_ANY, then dns_transaction_make_packet_mdns() fails with -EMSGSIZE.

This also fixes use-after-free.

Fixes #23894.
2022-07-09 05:20:10 +09:00
Yu Watanabe 055acd4d8b resolve: do not trigger assertions on invalid query 2022-07-09 05:20:10 +09:00
Yu Watanabe f2605af1f2 resolve: mdns_packet_extract_matching_rrs() may return 0
Fixes the following assertion:
---
Assertion 'r > 0' failed at src/resolve/resolved-mdns.c:180, function mdns_do_tiebreak(). Aborting.
---
2022-07-09 05:20:09 +09:00
Yu Watanabe d3887b2b48 resolve: shorten code a bit 2022-07-09 05:20:09 +09:00
Yu Watanabe 87b91644db resolve: introduce dns_transaction_setup_timeout()
This also fixes timeout in dns_transaction_make_packet_mdns(), which was
incremented multiple times.
2022-07-09 05:20:09 +09:00
Yu Watanabe 765647ba80 resolve: fix misuse of accuracy parameter in sd_event_add_time()
Also, this makes mDNS regular queries sent without delay (except for
one caused by the default accuracy of sd-event).

Note, RFC 6762 Section 5.2 is about continuous mDNS query, which is not
implemented yet.
2022-07-09 05:20:09 +09:00
Yu Watanabe 4b2ceb8a48 resolve: drop unnecessary else, and add short comment 2022-07-09 05:20:09 +09:00
Yu Watanabe c3dbb13288 Revert "resolve: mDNS transaction max attempts fix"
This reverts commit 127b26f3d8.

The commit made mDNS queries quite unstable.
Note that, RFC 6762 does not explicitly prohibit to send a request
multiple times.
2022-07-09 05:20:09 +09:00
Yu Watanabe d50a58e725 resolve: mdns: fix use-after-free
Fixes #23843 and #23873.
2022-07-09 05:20:09 +09:00
Yu Watanabe 4bc4040bc0 sd-device: send udev database version
Otherwise, sd-device object received through sd-device-monitor does not
show current tags.

Fixes #23799.
2022-07-09 04:53:36 +09:00
Yu Watanabe 793ab3e9dd sd-device: make device_get_properties_{nulstr,strv}() take NULL for result value
In most cases, it is not necessary to call them without retrieving
result. But, most of other getter functions for sd-device can take NULL.
Let's follow the way for consistency.
2022-07-09 04:14:44 +09:00
Yu Watanabe cff31876da sd-device: change type of properties nulstr from uint8_t* to char* 2022-07-09 04:12:42 +09:00
Yu Watanabe d38655d792 core/cgroup: drop unnecessary else 2022-07-09 03:37:43 +09:00
Yu Watanabe fe1ed553b3 core: shorten code a bit 2022-07-09 03:37:43 +09:00
Yu Watanabe 6a35d52d78 core/load-fragment: fix error value in log_syntax()
`extract_first_word()` may return positive value on success.
2022-07-09 03:36:58 +09:00
Luca Boccassi 02d06ba180 bootctl: add --install-source=auto|image|host
When using --root=/--image= the binaries to install/update will be
picked from the directory/image. Add an option to let the caller
choose.
By default (auto) the image is tried first, and if nothing is found
then the host. The other options allow to strictly try the image
or host and ignore the other.
2022-07-08 16:58:51 +01:00
Luca Boccassi 80a2381d5c bootctl: add --root and --image
Operate on image/directory, and also take files to install from it
2022-07-08 16:58:15 +01:00
Lennart Poettering 03bc11d1c4 mac: rework labelling code to be simpler, and less racy
This merges the various labelling calls into a single label_fix_full(),
which can operate on paths, on inode fds, and in a dirfd/fname style
(i.e. like openat()). It also systematically separates the path to look
up in the db from the path we actually use to reference the inode to
relabel.

This then ports tmpfiles over to labelling by fd. This should make the
code a bit less racy, as we'll try hard to always operate on the very
same inode, pinning it via an fd.

User-visibly the behaviour should not change.
2022-07-08 17:43:49 +02:00
Lennart Poettering 05c4affe04 tmpfiles: take error code from "errno" earlier
This uses RET_NERRNO to more quickly pull the error code we see into
"r" out of "errno".

This does not change anything really. The only reason to do this is
because it is harder to break this accidentally. The thing is that
"errno" is easily set as side-effect of arbitrary functions. Thus, if we
rely on it being set for long code paths, we need to make carefully sure
that no code in between calls any function that might corrupt it as
side-effect. As far as I can see we did get this right. Nonetheless, I
think we should just store the value in "r" instead, to make it easier
to maintain this in the long run, if more code is inserted one day, who
knows.
2022-07-08 16:11:20 +02:00
Lennart Poettering 979055ba73 Merge pull request #23946 from poettering/tmpfiles-extrat-dir-fn
tmpfiles: port from basename()/dirname() → path_extract_direcory()/path_extract_filename()
2022-07-08 16:10:42 +02:00
Lennart Poettering ebbbf44ab9 mkdir-label: don't use mkdirat_errno_wrapper() without reason
mkdirat_errno_wrapper(x,y,z) is identical to RET_NERRNO(mkdirat(x, y,
z)). Let's always use the latter when we can, because easier to read,
shorter.

The only reason to have mkdirat_errno_wrapper() at all is so that we can
pass a function pointer to it around. Otherwise, let's not use it.
2022-07-08 16:10:26 +02:00
Yu Watanabe 9102c625a6 time-util: fix buffer-over-run
Fixes #23928.
2022-07-08 16:09:46 +02:00
Lennart Poettering ef8304de53 smack: catch more types of 'not supported' errors 2022-07-08 16:09:27 +02:00
Lennart Poettering 2f3745dd26 tmpfiles: shorten code a bit 2022-07-08 16:09:06 +02:00
Yu Watanabe 370999c05b resolve: fix possible integer overflow 2022-07-08 22:13:24 +09:00
Yu Watanabe beeab352de resolve: fix heap-buffer-overflow reported by ASAN with strict_string_checks=1
Fixes #23942.
2022-07-08 22:01:02 +09:00
Lennart Poettering 4609d3bb07 tmpfiles: port from dirname/basename to path_extract_directory/filename()
let's use our better, newer internal APIs for these purposes. This gets us
two things: safer handling when the root dir is specified, and better
handling of paths with trailing slashes, as we can refuse them whenever
a directory is not acceptable.
2022-07-08 11:35:13 +02:00
Lennart Poettering 70980a39b8 path-util: NULL strings are definitely not valid paths
Let's make this functions that check validity of paths a bit more
friendly towards one specific kind of invalid path: a NULL pointer.

This follows similar logic in path_is_valid(), path_is_normalized() and
so on.
2022-07-08 11:35:00 +02:00
Lennart Poettering 149e0ca6c7 tmpfiles: correct error variable to use 2022-07-08 10:41:19 +02:00
Lennart Poettering 1ce268c789 namespace: fix propagated error number 2022-07-08 10:40:40 +02:00
Frantisek Sumsal db835e5d0e Merge pull request #23931 from yuwata/systemctl-color-log
systemctl: colorize logs
2022-07-07 13:15:59 +00:00
Jan Janssen b30a43dfd7 boot: Use UEFI protocol struct names
These are somewhat pointless gnu-efi typedefs. Using the names from the
UEFI spec makes things clearer.

The one exception left is EFI_FILE as we use it a lot and
EFI_FILE_PROTOCOL is quite a handful.
2022-07-07 10:43:49 +02:00
Jan Janssen 04f316f0ee boot: Use typedef for PE structs 2022-07-07 10:16:26 +02:00
Jan Janssen 6028dd6d8e boot: Constify PE sections type 2022-07-07 10:08:51 +02:00
Jan Janssen 008f47f139 boot: Use void for base pointer 2022-07-07 10:08:18 +02:00
Jan Janssen 3ed785e591 boot: Use open_volume when creating cpio 2022-07-07 10:06:44 +02:00
Yu Watanabe 557218776e systemctl: drop color settings in log message
`log_warning()` colorize the message gracefully.
2022-07-07 16:40:06 +09:00
Yu Watanabe 158fdd5326 systemctl: enable colorized logging by default 2022-07-07 16:40:06 +09:00
Michal Sekletar e73bf3425c logind: don't start user@UID.service instance for background sessions
We have had background session class for a long time (since commit
e2acb67baa), but so far the only difference in handling of background
sessions was logging, i.e. we log some messages with LOG_DEBUG for such
sessions.

Previously there were complains [1] about excessive logging for each
time cron session is started. We used to advise user to enable lingering
for users if they want to avoid these log messages. However, on servers
with a lot of users the extra processes that result from lingering just
adds too much overhead. Hence I think that our current handling of
background sessions is not ideal and we should make better use of this
attribute.

This commit introduces a change in default behavior of logind. Logind is
now not going to start user instance of systemd when background session
is created and that should address excessive logging problem for cron
where background class is used by default. When the same user actually
logs in normally then user instance will be started as previously.

Also note that PAM_TTY variable is now always set to some value for PAM
sessions started via PAMName= option. Otherwise we would categorize such
sessions as "background" and user manager won't be started.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1825942
2022-07-07 10:10:42 +09:00
Yu Watanabe 99080ed3f0 Merge pull request #23396 from msekletar/fix-idle-action-lock
logind: remember our idle state and use it to detect idle level transitions
2022-07-07 07:42:51 +09:00
Luca Boccassi c235945bd5 Merge pull request #23918 from yuwata/dissect
Revert "dissect: ID from os-release should be non-empty, not just non-NULL"
2022-07-06 21:31:04 +01:00
Thomas Haller da519f8c81 fundamental: adjust #if conditional for _fallthrough_ for clang
NetworkManager takes systemd sources. It gets compiler warnings
related to _fallthrough_. They probably can also affect systemd
itself.

A) on RHEL-7, gcc 4.8.5-44.el7 we get:

    ../src/libnm-systemd-shared/src/fundamental/macro-fundamental.h:45:22: error: "__clang__" is not defined [-Werror=undef]
     #if __GNUC__ >= 7 || __clang__
                          ^

   Presumably gcc older than 7 is supported, so fix this.

B) on Ubuntu 18.04, clang 1:6.0-41~exp5~ubuntu1 we get:

    ../src/libnm-systemd-core/src/libsystemd-network/sd-dhcp6-client.c:746:17: error: declaration does not declare anything [-Werror,-Wmissing-declarations]
                    _fallthrough_;
                    ^
    ../src/libnm-systemd-shared/src/fundamental/macro-fundamental.h:46:25: note: expanded from macro '_fallthrough_'
    #  define _fallthrough_ __attribute__((__fallthrough__))
                            ^

   Granted, README comments that clang >= 10 is required. However,
   parts of systemd build just fine with older clang. It seems unnecessary
   to break this and the fix helps NetworkManager.

Fixes: c0f5d58c9a ('meson: Document why -Wimplicit-fallthrough is not used with clang')
2022-07-06 22:10:23 +02:00
Zbigniew Jędrzejewski-Szmek 132b63bd31 Merge pull request #15205 from jlebon/pr/preset-all-firstboot
manager: optionally, do a full preset on first boot
2022-07-06 19:11:01 +02:00