Lennart Poettering [Wed, 17 Oct 2018 18:15:26 +0000 (20:15 +0200)]
automount: fix deserialization of dev_t
let's prefer "unsigned long" rather than "unsigned", in case there are
archs that have 32bit int, but 64bit dev_t.
(Also one cast was wrong anyway.)
Lennart Poettering [Wed, 17 Oct 2018 16:37:48 +0000 (18:37 +0200)]
core: enforce a limit on STATUS= texts recvd from services
Let's better be safe than sorry, and put a limit on what we receive.
Lennart Poettering [Wed, 17 Oct 2018 16:36:24 +0000 (18:36 +0200)]
core: when deserializing state always use read_line(…, LONG_LINE_MAX, …)
This should be much better than fgets(), as we can read substantially
longer lines and overly long lines result in proper errors.
Fixes a vulnerability discovered by Jann Horn at Google.
CVE-2018-15686
LP: #1796402
https://bugzilla.redhat.com/show_bug.cgi?id=1639071
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 08:36:25 +0000 (10:36 +0200)]
Merge pull request #10525 from poettering/journal-vaccum-all
journald: add ability to vacuum active files too
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 08:08:39 +0000 (10:08 +0200)]
Merge pull request #10522 from lnykryn/initrd_debug
Let's make systemd-debug-generator usable also in initrd
Lucas Werkmeister [Thu, 25 Oct 2018 21:34:05 +0000 (23:34 +0200)]
man: journalctl: expand description of --all
In the default journalctl output, unprintable entries are abbreviated as
“[<amount> blob data]”; using the same term in the documentation helps
users to quickly discover the option they need to add in order to see
those entries.
Yu Watanabe [Fri, 26 Oct 2018 01:16:00 +0000 (10:16 +0900)]
sd-device: fix wrong assertion (#10530)
Yu Watanabe [Fri, 26 Oct 2018 00:34:07 +0000 (09:34 +0900)]
Merge pull request #10523 from poettering/fd-get-path-optimize
fd_get_path() optimization
Lennart Poettering [Thu, 25 Oct 2018 21:01:41 +0000 (23:01 +0200)]
core: reword polkit request a bit (#10524)
"killing" is very UNIX terminology, and not really what this is about.
Let's be more correct and say "send a UNIX signal" for the operation.
Otherwise things are really weird if users call "journalctl --rotate"
from the command line, which internally asks systemd to send SIGUSR2 to
to journald: when german locale is selected this asks the user — roughly
transliterated — whether they want to "eliminate" journald, which is
definitely not the intended meaning.
Lennart Poettering [Thu, 25 Oct 2018 19:35:32 +0000 (21:35 +0200)]
journal-file: structured initialization is your friend
Lennart Poettering [Thu, 25 Oct 2018 16:39:27 +0000 (18:39 +0200)]
journald: when we are asked to rotate all files, let's also look at closed files
Before this when asked for rotation we'd only rotate files we have open
anyway. However there might be a number of other files on disk that are
active (i.e. not archived yet) but not open. Let's take care of those
too, so that rotation is always comprehensive, and the user gets the
guarantee that afterthe rotation all stored data is in archived files.
Fixes: #1017
Lennart Poettering [Thu, 25 Oct 2018 19:16:38 +0000 (21:16 +0200)]
man: document the new combined --vacuum*= and --rotate invocation
Lennart Poettering [Thu, 25 Oct 2018 16:38:50 +0000 (18:38 +0200)]
journalctl: fix error number in error message
Lennart Poettering [Thu, 25 Oct 2018 16:36:56 +0000 (18:36 +0200)]
journalctl: add ability to vacuum and rotate in one step
journalctl --vacuum-*= only vacuums archived files. To archive all
active files the rotate operation is used. Let's add a new switch that
combines both, so that the user a single command to first move all
running journal files into archival and then vacuum them.
See: #1017
Lennart Poettering [Thu, 25 Oct 2018 16:35:55 +0000 (18:35 +0200)]
journald: log about an OOM condition
Lennart Poettering [Thu, 25 Oct 2018 16:35:39 +0000 (18:35 +0200)]
journald: debug log when we cannot read the machine ID
Lennart Poettering [Thu, 25 Oct 2018 17:23:23 +0000 (19:23 +0200)]
journal-file: refactor journal_file_open_reliably()
Let's split out the part that actually renames the file in case we can't
open it into a new function journal_file_dispose().
This way we can reuse the function in other cases where we want to open
a file but can't.
Lennart Poettering [Thu, 25 Oct 2018 16:33:11 +0000 (18:33 +0200)]
journal-file: refactor journal_file_rotate()
Let's split the function in three: the part where we archive the old
file into journal_file_archive(), and the part where we initiate the
deferred closing into journal_file_initiate_close().
journal_file_rotate() then simply becomes a wrapper around these two
calls, and the opening of the new journal file.
This useful so that we can archive journal files without having to open
new ones, i.e. to do only the archival part of the rotation, without the
rotation part.
Lennart Poettering [Thu, 25 Oct 2018 15:42:30 +0000 (17:42 +0200)]
journal: refactor out loop that processes deferred closes into its own function
Lennart Poettering [Thu, 25 Oct 2018 15:40:41 +0000 (17:40 +0200)]
journal: fix some type confusion in journal_directory_vacuum()
Let's store array sizes and indexes in size_t. And let's count numbers
of files in uint64_t (simply because that is the type of the input
parameter for this of the function)
Lennart Poettering [Thu, 25 Oct 2018 10:30:48 +0000 (12:30 +0200)]
journald: use structured initialization
Lennart Poettering [Thu, 25 Oct 2018 10:30:36 +0000 (12:30 +0200)]
journald: use usec_sub_unsigned() where we can
Lennart Poettering [Thu, 25 Oct 2018 19:27:00 +0000 (21:27 +0200)]
fd-util: optimize fd_get_path() a bit
journald calls fd_get_path() a lot (it probably shouldn't, there's some
room for improvement there, but I'll leave that for another time), hence
it's worth optimizing the call a bit, in particular as it's easy.
Previously we'd open the dir /proc/self/fd/ first, before reading the
symlink inside it. This means the whole function requires three system
calls: open(), readlinkat(), close(). The reason for doing it this way
is to distinguish the case when we see ENOENT because /proc is not
mounted and the case when the fd doesn't exist.
With this change we'll directly go for the readlink(), and only if that
fails do an access() to see if /proc is mounted at all.
This optimizes the common case (where the fd is valid and /proc
mounted), in favour of the uncommon case (where the fd doesn#t exist or
/proc is not mounted).
Lennart Poettering [Thu, 25 Oct 2018 19:16:47 +0000 (21:16 +0200)]
fs-util: increase start buffer size in readlinkat_malloc()
I noticed while profiling journald that we invoke readlinkat() a ton on
open /proc/self/fd/<fd>, and that the returned paths are more often than
not longer than the 99 chars used before, when we look at archived
journal files. This means for these cases we generally need to execute
two rather than one syscalls.
Let's increase the buffer size a tiny bit, so that we reduce the number
of syscalls executed. This is really a low-hanging fruit of
optimization.
Lukas Nykryn [Thu, 25 Oct 2018 14:34:00 +0000 (16:34 +0200)]
debug-generator: introduce rd.* version of all options
Zbigniew Jędrzejewski-Szmek [Thu, 25 Oct 2018 14:25:39 +0000 (16:25 +0200)]
Merge pull request #10378 from poettering/json-fuzz-fix
json: a comprehensive fix for oss-fuzz#10908
Lukas Nykryn [Thu, 25 Oct 2018 14:21:26 +0000 (16:21 +0200)]
proc-cmdline: introduce PROC_CMDLINE_RD_STRICT
Our current set of flags allows an option to be either
use just in initrd or both in initrd and normal system.
This new flag is intended to be used in the case where
you want apply some settings just in initrd or just
in normal system.
Lennart Poettering [Thu, 25 Oct 2018 11:29:42 +0000 (13:29 +0200)]
Merge pull request #10518 from poettering/dhcp6-size-fixes
dhcp6 packet size calculation fixes
Zbigniew Jędrzejewski-Szmek [Thu, 25 Oct 2018 10:54:47 +0000 (12:54 +0200)]
Merge pull request #10504 from poettering/hibernate-fallback
s2h: when hibernate fails after coming back from suspend, go back to suspend
Martin Wilck [Wed, 24 Oct 2018 11:22:01 +0000 (13:22 +0200)]
core: don't create Requires for workdir if "missing ok"
Don't add an implicit RequiresMountsFor depenency for the
WorkingDirectory of a unit if the "-" character was used to
indicate that "a missing working directory is not considered fatal"
(see systemd.exec(5)). Otherwise systemd might fail the unit
because of missing dependencies.
Lennart Poettering [Fri, 19 Oct 2018 10:14:22 +0000 (12:14 +0200)]
dhcp6: prefer offsetof() over sizeof() for structs with undefined sizes
This doesn't change anything in the generated source, but I think makes
semantically more sense, as these structures have undefined size, and we
only want to know the size up to the data field in these cases.
Lennart Poettering [Fri, 19 Oct 2018 10:12:33 +0000 (12:12 +0200)]
dhcp6: make sure we have enough space for the DHCP6 option header
Fixes a vulnerability originally discovered by Felix Wilhelm from
Google.
CVE-2018-15688
LP: #1795921
https://bugzilla.redhat.com/show_bug.cgi?id=1639067
Lennart Poettering [Fri, 19 Oct 2018 10:11:59 +0000 (12:11 +0200)]
dhcp6: reduce whitespace a bit
Lennart Poettering [Fri, 19 Oct 2018 10:11:48 +0000 (12:11 +0200)]
dhcp6: split assert_return() to be more debuggable when hit
Lennart Poettering [Fri, 19 Oct 2018 10:11:29 +0000 (12:11 +0200)]
dhcp6: constify things where we can
Yu Watanabe [Thu, 25 Oct 2018 02:41:55 +0000 (11:41 +0900)]
string-util: fix prototype of explicit_bzero_safe() (#10513)
Follow-up for
87f54463117654af48d6027986c2b21831d41616.
Lennart Poettering [Wed, 24 Oct 2018 20:21:28 +0000 (22:21 +0200)]
time-util: change parse_sec_fix_0() to accept "0s" for infinity too (#10501)
This function is about compatibility, nothing else, hence we should make
it properly compatible.
Fixes: #9556
Lennart Poettering [Wed, 24 Oct 2018 20:18:33 +0000 (22:18 +0200)]
Merge pull request #10510 from poettering/uacess-brackets
coverity fixes
Lennart Poettering [Wed, 24 Oct 2018 20:08:07 +0000 (22:08 +0200)]
man: fix wording a bit on the cgroup accountings options (#10509)
The &MEMORY_ACCOUNTING_DEFAULT; resolves to "yes" or "no" while the rest
of the paragraph talked about "on" and "off". Let's adjust this and
stick to "yes" and "no"...
Quite frankly I think it's not a particularly good idea to change the
docs based configuration changes... THis can only be incomplete, and the
wording is still very awkward since we repeat the same sentence twice.
Lennart Poettering [Wed, 24 Oct 2018 20:00:42 +0000 (22:00 +0200)]
Merge pull request #10505 from poettering/have-namespace
skip various test-execute tests when we have no namespacing
Lennart Poettering [Wed, 24 Oct 2018 19:41:02 +0000 (21:41 +0200)]
units: drop systemd-user-sessions.service ordering dep on systemd-journal-flush.service (#10502)
THis dep existed since the unit was introduced, but I cannot see what
good it would do. Hence in the interest of simplifying things, let's
drop it. If breakages appear later we can certainly revert this again.
Fixes: #10469
Lennart Poettering [Wed, 24 Oct 2018 19:00:15 +0000 (21:00 +0200)]
string-util: introduce explicit_zero_safe()
The only real difference is that this wrapper can deal with NULL
pointer arguments, but only if the length is also zero.
CID 1396277
Lennart Poettering [Wed, 24 Oct 2018 18:47:52 +0000 (20:47 +0200)]
udev: use right error variable to make level decision
Lennart Poettering [Wed, 24 Oct 2018 18:46:41 +0000 (20:46 +0200)]
udev: fix bad if {}
CID 1396318
CID 1396319
Lennart Poettering [Wed, 24 Oct 2018 14:53:14 +0000 (16:53 +0200)]
test: skip various tests if namespacing is not available
Apparently on Debian LXC/AppArmor doesn't allow namespacing to container
payloads. Deal with it.
Fixes: #9700
Lennart Poettering [Wed, 24 Oct 2018 15:07:04 +0000 (17:07 +0200)]
tests: add helper call have_namespaces() to test whether Linux namespaces are available
A slighly sloppy test call for conditionalizing several tests.
Lennart Poettering [Wed, 24 Oct 2018 15:06:28 +0000 (17:06 +0200)]
tests: as per CODING_STYLE undefine basename() right after including libgen.h
Lennart Poettering [Wed, 24 Oct 2018 15:05:16 +0000 (17:05 +0200)]
tests: alloc-util.h and fs-util.h are our own headers
Hence include them with "" rather than <>. Also including them twices is
a pretty bad idea too.
Lennart Poettering [Wed, 24 Oct 2018 14:55:17 +0000 (16:55 +0200)]
execute: if we fail to do namespacing, explain why we refuse to continue in a debug message
Lennart Poettering [Wed, 24 Oct 2018 11:15:24 +0000 (13:15 +0200)]
sleep: when we can't hibernate on suspend-then-hibernate, fall back to suspend again
Let's make this a bit safer, and try hard to return to sleep, if we can
at all.
Fixes: #10212
Lennart Poettering [Wed, 24 Oct 2018 11:04:30 +0000 (13:04 +0200)]
sleep: rework what we do if a suspend fails.
First of all, let's fix logging: let's simply log the same message as we
do on success, so that there's always the same pair of these messages
around, regardless if the suspend was successful or not. To distuingish
a successful suspend from a failed one, check the ERRNO= field of the
structured message.
In most ways a failed suspend cycle is not distuingishable from a
successful one that took no time, hence let's treat it this way, and
always pair the success message with a failure message.
This also changes a more important concept: the post-suspend callouts
are now called also called on failure, following the same logic: let's
always run them in pairs: for every pre callout a post callout has to
follow.
Lennart Poettering [Wed, 24 Oct 2018 10:57:37 +0000 (12:57 +0200)]
sleep: no need to check for resume_offset twice
The W_OK check already checks for existance hence let's remove the F_OK
check.
Lennart Poettering [Wed, 24 Oct 2018 10:52:11 +0000 (12:52 +0200)]
sleep: let's turn off the RTC alarm time ASAP
Let's be a tiny bit more careful here.
Also, let's rearrange things to simplify them a bit, and to not use "r"
outside of its immediate scope of validity.
Lennart Poettering [Wed, 24 Oct 2018 10:48:56 +0000 (12:48 +0200)]
sleep: round up when calculating RTC sleep time
Paranoia: this way we know that when we wake up all timers are
definitely equal or ahead of what we expect them to be.
Lennart Poettering [Wed, 24 Oct 2018 10:47:46 +0000 (12:47 +0200)]
sleep: move log message generation for rtc_read_time() into the function itself
The log messages were petty borked anyway, and generated at two separate
locations. Let's fix that.
Lennart Poettering [Wed, 24 Oct 2018 10:45:06 +0000 (12:45 +0200)]
sleep: rework write_wakealarm() to take a numeric parameter
Also, let's rename it to rtc_write_wake_alarm(). Both changes together
make sure rtc_write_wake_alarm() and rtc_read_time() are more alike in
their naming and semantics.
Lennart Poettering [Wed, 24 Oct 2018 10:40:07 +0000 (12:40 +0200)]
sleep: rename read_wakealarm() → rtc_read_time()
It doesn't read wakealarm, but the current time of the RTC. Hence, let's
rename this to make it less misleading.
Lennart Poettering [Wed, 24 Oct 2018 10:38:13 +0000 (12:38 +0200)]
sleep: log about the correct errors
Lennart Poettering [Wed, 24 Oct 2018 10:38:04 +0000 (12:38 +0200)]
sleep: don't make up errors, propagate the right ones
Lennart Poettering [Wed, 24 Oct 2018 10:35:49 +0000 (12:35 +0200)]
sleep: let's use write_string_file() instead of write_string_stream() if we can
Let's shorten things.
Lennart Poettering [Wed, 24 Oct 2018 08:57:45 +0000 (10:57 +0200)]
Merge pull request #10484 from yuwata/udev-spawn-simplify
udev-event: cleanups about udev_event_spawn()
Lennart Poettering [Wed, 24 Oct 2018 08:53:35 +0000 (10:53 +0200)]
Merge pull request #10498 from yuwata/udev-builtin-log
udev-builtin: use log_device_*() macros
Lennart Poettering [Wed, 24 Oct 2018 08:51:53 +0000 (10:51 +0200)]
Merge pull request #10483 from yuwata/udev-cleanup-10
tree-wide: use log_device_*()
Lennart Poettering [Wed, 24 Oct 2018 08:36:20 +0000 (10:36 +0200)]
Merge pull request #10461 from yuwata/small-cleanups
Fixes recent defects reported by coverity
Jiuyang liu [Mon, 22 Oct 2018 17:26:05 +0000 (01:26 +0800)]
add ephemeral to nspawn-settings.
Yu Watanabe [Fri, 19 Oct 2018 17:39:02 +0000 (02:39 +0900)]
udevadm-info: fix memleak
Fixes CID#1396276.
Yu Watanabe [Fri, 19 Oct 2018 17:36:12 +0000 (02:36 +0900)]
udevadm-monitor: initialize variable
Fixes CID#1396278.
Yu Watanabe [Fri, 19 Oct 2018 17:34:12 +0000 (02:34 +0900)]
modules-load: return first error in the loop
Follow-up for
a889e206a7434afe28039a1698e5ecf6a3fb7a9b.
Fixes CID#1396280.
Yu Watanabe [Fri, 19 Oct 2018 00:37:08 +0000 (09:37 +0900)]
reply-password: initialize 'length' variable
Follow-up for
1fd2786161feba4276a81c3468cfbfb118f56517.
This fixes the following warning when built by clang:
```
../src/reply-password/reply-password.c:76:21 warning: variable 'length' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
```
Fixes CID#1396281 and CID#1396277.
Yu Watanabe [Fri, 19 Oct 2018 00:19:24 +0000 (09:19 +0900)]
core: use ascii_toupper() instead of everytime judging whether it is the first message
Yu Watanabe [Tue, 23 Oct 2018 04:52:57 +0000 (13:52 +0900)]
udev-event: use sd_event_add_io() for reading stdout or stderr of spawned process
Yu Watanabe [Tue, 23 Oct 2018 03:25:17 +0000 (12:25 +0900)]
udev-event: unify two log_*() by log_full()
Yu Watanabe [Tue, 23 Oct 2018 03:23:44 +0000 (12:23 +0900)]
udev-event: Capitalize log messages
Yu Watanabe [Tue, 23 Oct 2018 03:18:33 +0000 (12:18 +0900)]
udev-event: fix condition to create pipe fds
The bug was introduced by
feaa6db7ac287b34887f75c27a7efc2107a7b691.
Yu Watanabe [Tue, 23 Oct 2018 01:18:36 +0000 (10:18 +0900)]
udev-event: set O_CLOEXEC to pipe fds
Yu Watanabe [Mon, 22 Oct 2018 20:47:21 +0000 (05:47 +0900)]
udev-event: make failure in getting device properties fatal
Yu Watanabe [Mon, 22 Oct 2018 22:23:01 +0000 (07:23 +0900)]
test: create /dev/null in test-udev.pl
Yu Watanabe [Mon, 22 Oct 2018 09:29:05 +0000 (18:29 +0900)]
udev-event: use rearrange_stdio() and close_all_fds()
Yu Watanabe [Mon, 22 Oct 2018 09:27:57 +0000 (18:27 +0900)]
udev-event: set FORK_DEATHSIG flag
Yu Watanabe [Mon, 22 Oct 2018 09:25:18 +0000 (18:25 +0900)]
udev-event: drop redundant code
We have set FORK_RESET_SIGNALS in safe_fork(). So, calling
reset_signal_mask() after safe_fork() is redundant.
Yu Watanabe [Mon, 22 Oct 2018 09:21:42 +0000 (18:21 +0900)]
udev-event: move debug logging before safe_fork()
This fixes the following journal layout issue:
```
Oct 22 15:26:02 systemd-udevd[348]: RUN '/usr/sbin/setregdomain' /usr/lib/udev/rules.d/85-regulatory.rules:5
Oct 22 15:26:02 [439]: Starting '/usr/sbin/setregdomain'
Oct 22 15:26:02 systemd-udevd[348]: Process '/usr/sbin/setregdomain' succeeded.
```
Yu Watanabe [Tue, 23 Oct 2018 19:27:36 +0000 (04:27 +0900)]
udev-builtin-input_id: update log messages
Yu Watanabe [Tue, 23 Oct 2018 19:19:16 +0000 (04:19 +0900)]
udev-builtin-usb_id: update log messages
Yu Watanabe [Tue, 23 Oct 2018 19:08:13 +0000 (04:08 +0900)]
udev-builtin-uaccess: update log messages
Yu Watanabe [Tue, 23 Oct 2018 19:02:29 +0000 (04:02 +0900)]
udev-builtin-net_setup_link: update log messages
Yu Watanabe [Tue, 23 Oct 2018 18:56:17 +0000 (03:56 +0900)]
udev-builtin-keyboard: update log messages
Yu Watanabe [Tue, 23 Oct 2018 18:26:31 +0000 (03:26 +0900)]
sd_hwdb: update log messages
Yu Watanabe [Tue, 23 Oct 2018 18:13:54 +0000 (03:13 +0900)]
udev-builtin-btrfs: add debug log messages
Yu Watanabe [Tue, 23 Oct 2018 18:01:19 +0000 (03:01 +0900)]
udev-builtin-blkid: add more debug log messages
Yu Watanabe [Tue, 23 Oct 2018 17:42:02 +0000 (02:42 +0900)]
udev-builtin: fix return value of udev_builtin_hwdb()
This fixes a bug introduced by
d354690e7d0429338cdd1c2cfe1fdd08fc53da9e.
Also, this adds more debug logs.
Yu Watanabe [Tue, 23 Oct 2018 17:46:41 +0000 (02:46 +0900)]
sd-device: fix argument name in log_device_*() macros
Follow-up for
b0cba0ca526ed2d86e283a0fcfebdf0a4d4bea9b.
Evgeny Vereshchagin [Sun, 21 Oct 2018 03:21:36 +0000 (03:21 +0000)]
journald: use the "driver" transport for logging a refused connection
Otherwise, these messages can end up in `/dev/null` when journald is run
in containers as was shown in https://github.com/systemd/systemd/pull/10444#issuecomment-
430927793.
Evgeny Vereshchagin [Fri, 12 Oct 2018 12:17:04 +0000 (12:17 +0000)]
sd-journal: escape binary data in match_make_string()
Fixes: #10383
Yu Watanabe [Tue, 23 Oct 2018 13:49:16 +0000 (22:49 +0900)]
udevadm: normalize exit status
After
d354690e7d0429338cdd1c2cfe1fdd08fc53da9e, each udevadm command
returns negative errno on error. So, let's normalize the exit status
of udevadm.
Lennart Poettering [Tue, 23 Oct 2018 17:30:49 +0000 (19:30 +0200)]
Merge pull request #10493 from yuwata/parse-time-overflow
util: check overflow in parse_time() and parse_nsec()
Yu Watanabe [Mon, 22 Oct 2018 04:21:43 +0000 (13:21 +0900)]
link-config: use log_device_*()
Yu Watanabe [Mon, 22 Oct 2018 04:21:16 +0000 (13:21 +0900)]
udev-watch: use log_device_*()
Yu Watanabe [Mon, 22 Oct 2018 04:12:19 +0000 (13:12 +0900)]
udev-node: use log_device_*()
Yu Watanabe [Mon, 22 Oct 2018 04:01:22 +0000 (13:01 +0900)]
rfkill: use log_device_*()
Yu Watanabe [Mon, 22 Oct 2018 03:57:37 +0000 (12:57 +0900)]
mount-tool: use log_device_*()