]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
6 years agobasic/strbuf: include empty strings in count
Zbigniew Jędrzejewski-Szmek [Mon, 26 Mar 2018 08:32:42 +0000 (10:32 +0200)] 
basic/strbuf: include empty strings in count

Not that it matters much, but it seems cleaner to also count those
inputs, even if they do not consume extra storage space.

The test is extended to include an empty input and counts in the test are
adjusted to include it.

6 years agobasic/strbuf: use structured initalizers to shorten code
Zbigniew Jędrzejewski-Szmek [Mon, 26 Mar 2018 08:26:39 +0000 (10:26 +0200)] 
basic/strbuf: use structured initalizers to shorten code

6 years agojournal: use structured initalizer
Zbigniew Jędrzejewski-Szmek [Sun, 25 Mar 2018 20:44:05 +0000 (22:44 +0200)] 
journal: use structured initalizer

6 years agotree-wide: add bsearch_safe and use where appropriate
Zbigniew Jędrzejewski-Szmek [Sun, 25 Mar 2018 20:43:43 +0000 (22:43 +0200)] 
tree-wide: add bsearch_safe and use where appropriate

Should fix #8557.

6 years agofuzz-unit-file: add __has_feature(memory_sanitizer) when skipping ListenNetlink=
Zbigniew Jędrzejewski-Szmek [Sun, 25 Mar 2018 20:26:13 +0000 (22:26 +0200)] 
fuzz-unit-file: add __has_feature(memory_sanitizer) when skipping ListenNetlink=

https://clang.llvm.org/docs/MemorySanitizer.html#id5 documents this
check as the way to detect MemorySanitizer at compilation time. We
only need to skip the test if MemorySanitizer is used.

Also, use this condition in cg_slice_to_path(). There, the code that is
conditionalized is not harmful in any way (it's just unnecessary), so remove
the FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION condition.

Fixes #8482.

6 years agofuzz-unit-file: adjust check for ListenNetlink yet again
Zbigniew Jędrzejewski-Szmek [Sun, 25 Mar 2018 20:11:44 +0000 (22:11 +0200)] 
fuzz-unit-file: adjust check for ListenNetlink yet again

The test for ListenNetlink would abort the loop if a line longer then LINE_MAX
was encountered (read_line() returns -ENOBUFS in that case). Let's use the
the line length limit that the unit file parses uses.

https://oss-fuzz.com/v2/issue/5546208027213824/7094.

6 years agoMerge pull request #8565 from poettering/cocci-again
Zbigniew Jędrzejewski-Szmek [Fri, 23 Mar 2018 18:22:24 +0000 (19:22 +0100)] 
Merge pull request #8565 from poettering/cocci-again

run all coccinelle again

6 years agoMerge pull request #8559 from poettering/integration-test-fixes
Zbigniew Jędrzejewski-Szmek [Fri, 23 Mar 2018 18:21:25 +0000 (19:21 +0100)] 
Merge pull request #8559 from poettering/integration-test-fixes

make integration tests pass again

6 years agococcinelle: run no-if-assignments.cocci again 8565/head
Lennart Poettering [Fri, 23 Mar 2018 15:33:38 +0000 (16:33 +0100)] 
coccinelle: run no-if-assignments.cocci again

6 years agococcinelle: run safe_fclose.cocci again
Lennart Poettering [Fri, 23 Mar 2018 15:32:48 +0000 (16:32 +0100)] 
coccinelle: run safe_fclose.cocci again

6 years agococcinelle: run while-true.cocci again
Lennart Poettering [Fri, 23 Mar 2018 15:32:26 +0000 (16:32 +0100)] 
coccinelle: run while-true.cocci again

6 years agoPartially revert "seccomp: add mmap and address family restrictions for MIPS" (#8563)
James Cowgill [Fri, 23 Mar 2018 15:04:16 +0000 (15:04 +0000)] 
Partially revert "seccomp: add mmap and address family restrictions for MIPS" (#8563)

This reverts the mmap parts of f5aeac1439d64905c7b1b57042c39589dd31e3a6,
but keeps the part which restricts address families which works
correctly.

Unfortunately the MIPS toolchains still do not implement PT_GNU_STACK.
This means that while the commit to restrict mmap on MIPS was "correct",
it had the side effect of causing pthread_create to fail because glibc tries
to allocate an executable stack for new threads in the absense of
PT_GNU_STACK. We should wait until PT_GNU_STACK is implemented in all
the relevant parts of the toolchain (at least gcc and glibc) before
enabling this again.

6 years agorun-coccinelle.sh: use set -x for showing command line of "spatch" 8559/head
Lennart Poettering [Fri, 23 Mar 2018 14:44:10 +0000 (15:44 +0100)] 
run-coccinelle.sh: use set -x for showing command line of "spatch"

Let's make sure run-coccinelle.sh generates similar output as
run-integration-tests.sh, hence use the same "set -x" logic.

6 years agococcinelle: run const-strlen.cocci again
Lennart Poettering [Fri, 23 Mar 2018 14:41:33 +0000 (15:41 +0100)] 
coccinelle: run const-strlen.cocci again

6 years agorun-integration-tests: show number of tests run
Lennart Poettering [Fri, 23 Mar 2018 09:02:22 +0000 (10:02 +0100)] 
run-integration-tests: show number of tests run

6 years agorun-integration-tests: show make command line executed
Lennart Poettering [Fri, 23 Mar 2018 08:51:02 +0000 (09:51 +0100)] 
run-integration-tests: show make command line executed

That makes it much easier to figure out what to type to just run one
specific test for debugging.

6 years agotest: bypass selinux integration test if selinux policy devel package is not installed
Lennart Poettering [Fri, 23 Mar 2018 08:48:15 +0000 (09:48 +0100)] 
test: bypass selinux integration test if selinux policy devel package is not installed

With this "sudo ./run-integration-tests.sh" should work fully without
exception, even on systems lacking SELinux (in which case that test will
just be skipped)

6 years agostat-util: fix fd_is_network_ns()
Lennart Poettering [Fri, 23 Mar 2018 08:47:04 +0000 (09:47 +0100)] 
stat-util: fix fd_is_network_ns()

This was broken in 77f9fa3b8ea46c27e5a5e9270f71bf1b4000c3e0. My fault.

Fixes: #8543
6 years agocore: delay adding target dependencies until all units are loaded and aliases resolve...
Michal Sekletar [Fri, 23 Mar 2018 14:28:06 +0000 (15:28 +0100)] 
core: delay adding target dependencies until all units are loaded and aliases resolved (#8381)

Currently we add target dependencies while we are loading units. This
can create ordering loops even if configuration doesn't contain any
loop. Take for example following configuration,

$ systemctl get-default
multi-user.target

$ cat /etc/systemd/system/test.service
[Unit]
After=default.target

[Service]
ExecStart=/bin/true

[Install]
WantedBy=multi-user.target

If we encounter such unit file early during manager start-up (e.g. load
queue is dispatched while enumerating devices due to SYSTEMD_WANTS in
udev rules) we would add stub unit default.target and we order it Before
test.service. At the same time we add implicit Before to
multi-user.target. Later we merge two units and we create ordering cycle
in the process.

To fix the issue we will now never add any target dependencies until we
loaded all the unit files and resolved all the aliases.

6 years agoMerge pull request #8552 from keszybz/test-improvements
Lennart Poettering [Fri, 23 Mar 2018 14:26:54 +0000 (15:26 +0100)] 
Merge pull request #8552 from keszybz/test-improvements

Test and diagnostics improvements

6 years agotree-wide: tabs suck (#8527)
Lennart Poettering [Fri, 23 Mar 2018 14:21:35 +0000 (15:21 +0100)] 
tree-wide: tabs suck (#8527)

6 years agobacklight: minor modernizations (#8528)
Lennart Poettering [Fri, 23 Mar 2018 14:20:34 +0000 (15:20 +0100)] 
backlight: minor modernizations (#8528)

Use strjoina() and STR_IN_SET()

6 years agoMerge pull request #8529 from poettering/logind-fixlets
Zbigniew Jędrzejewski-Szmek [Fri, 23 Mar 2018 14:19:32 +0000 (15:19 +0100)] 
Merge pull request #8529 from poettering/logind-fixlets

three trivial logind improvements

6 years agoudev: don't label high-button mice as joysticks (#8493)
Peter Hutterer [Fri, 23 Mar 2018 14:15:41 +0000 (00:15 +1000)] 
udev: don't label high-button mice as joysticks (#8493)

If a device exposes more than 16 mouse buttons, we run into the BTN_JOYSTICK
range, also labelling it as joystick. And since 774ff9b this results in only
ID_INPUT_JOYSTICK but no ID_INPUT_MOUSE.

Fixes #8460

6 years agoMerge pull request #8530 from poettering/include-is-obsolete
Zbigniew Jędrzejewski-Szmek [Fri, 23 Mar 2018 14:13:02 +0000 (15:13 +0100)] 
Merge pull request #8530 from poettering/include-is-obsolete

actively say that .include is obsolete

6 years agoMerge pull request #8533 from poettering/bootup-shutdown-phase2
Zbigniew Jędrzejewski-Szmek [Fri, 23 Mar 2018 14:11:46 +0000 (15:11 +0100)] 
Merge pull request #8533 from poettering/bootup-shutdown-phase2

extend docs on second phase of shutdown and watchdog handling

6 years agoMerge pull request #8534 from poettering/safe-atoi-full
Zbigniew Jędrzejewski-Szmek [Fri, 23 Mar 2018 11:30:12 +0000 (12:30 +0100)] 
Merge pull request #8534 from poettering/safe-atoi-full

some improvements to safe_atou() to allow specification of arbitrary bases

6 years agotree-wide: warn when a directory path already exists but has bad mode/owner/type 8552/head
Zbigniew Jędrzejewski-Szmek [Thu, 22 Mar 2018 12:03:41 +0000 (13:03 +0100)] 
tree-wide: warn when a directory path already exists but has bad mode/owner/type

When we are attempting to create directory somewhere in the bowels of /var/lib
and get an error that it already exists, it can be quite hard to diagnose what
is wrong (especially for a user who is not aware that the directory must have
the specified owner, and permissions not looser than what was requested). Let's
print a warning in most cases. A warning is appropriate, because such state is
usually a sign of borked installation and needs to be resolved by the adminstrator.

$ build/test-fs-util

Path "/tmp/test-readlink_and_make_absolute" already exists and is not a directory, refusing.
   (or)
Directory "/tmp/test-readlink_and_make_absolute" already exists, but has mode 0775 that is too permissive (0755 was requested), refusing.
   (or)
Directory "/tmp/test-readlink_and_make_absolute" already exists, but is owned by 1001:1000 (1000:1000 was requested), refusing.

Assertion 'mkdir_safe(tempdir, 0755, getuid(), getgid(), MKDIR_WARN_MODE) >= 0' failed at ../src/test/test-fs-util.c:320, function test_readlink_and_make_absolute(). Aborting.

No functional change except for the new log lines.

6 years agoMerge pull request #8553 from poettering/take-take
Alan Jenkins [Thu, 22 Mar 2018 22:33:38 +0000 (22:33 +0000)] 
Merge pull request #8553 from poettering/take-take

introduce TAKE_FD() and TAKE_PTR() macros

6 years agounits: document why systemd-time-wait-sync.service conditions on CAP_SYS_TIME (#8555)
Lennart Poettering [Thu, 22 Mar 2018 20:41:54 +0000 (21:41 +0100)] 
units: document why systemd-time-wait-sync.service conditions on CAP_SYS_TIME (#8555)

As requested by @evverx in https://github.com/systemd/systemd/pull/8537#issuecomment-375122615

6 years agovconsole: minor modernizations 8553/head
Lennart Poettering [Thu, 22 Mar 2018 16:12:23 +0000 (17:12 +0100)] 
vconsole: minor modernizations

6 years agovconsole-setup: don't concat strv if we don't need to (i.e. not in debug log mode)
Lennart Poettering [Thu, 22 Mar 2018 16:07:18 +0000 (17:07 +0100)] 
vconsole-setup: don't concat strv if we don't need to (i.e. not in debug log mode)

6 years agomacro: introduce new TAKE_FD() macro
Lennart Poettering [Thu, 22 Mar 2018 16:04:29 +0000 (17:04 +0100)] 
macro: introduce new TAKE_FD() macro

This is similar to TAKE_PTR() but operates on file descriptors, and thus
assigns -1 to the fd parameter after returning it.

Removes 60 lines from our codebase. Pretty good too I think.

6 years agosleep-config: replace USE() macro with TAKE_PTR() usage
Lennart Poettering [Thu, 22 Mar 2018 15:59:46 +0000 (16:59 +0100)] 
sleep-config: replace USE() macro with TAKE_PTR() usage

let's use the new generic macor instead of the locally defined, specific
one.

6 years agomacro: introduce TAKE_PTR() macro
Lennart Poettering [Thu, 22 Mar 2018 15:53:26 +0000 (16:53 +0100)] 
macro: introduce TAKE_PTR() macro

This macro will read a pointer of any type, return it, and set the
pointer to NULL. This is useful as an explicit concept of passing
ownership of a memory area between pointers.

This takes inspiration from Rust:

https://doc.rust-lang.org/std/option/enum.Option.html#method.take

and was suggested by Alan Jenkins (@sourcejedi).

It drops ~160 lines of code from our codebase, which makes me like it.
Also, I think it clarifies passing of ownership, and thus helps
readability a bit (at least for the initiated who know the new macro)

6 years agoman/udevadm: remove superfluous --version from subcommands (#8549)
Jan Synacek [Thu, 22 Mar 2018 18:24:37 +0000 (19:24 +0100)] 
man/udevadm: remove superfluous --version from subcommands (#8549)

There's need to show the program specific --version for each subcommand.

6 years agobasic/mkdir: convert bool flag to enum
Zbigniew Jędrzejewski-Szmek [Thu, 22 Mar 2018 11:38:01 +0000 (12:38 +0100)] 
basic/mkdir: convert bool flag to enum

In preparation for subsequent changes...

6 years agotest-execute: skip exec-specifier-interpolation if perl is missing
Zbigniew Jędrzejewski-Szmek [Thu, 22 Mar 2018 08:24:14 +0000 (09:24 +0100)] 
test-execute: skip exec-specifier-interpolation if perl is missing

6 years agotest-execute: allow sit0@ to exist in private network namespace
Zbigniew Jędrzejewski-Szmek [Thu, 22 Mar 2018 07:50:10 +0000 (08:50 +0100)] 
test-execute: allow sit0@ to exist in private network namespace

It's always visible:

$ sudo modprobe sit
$ sudo unshare -n ip l
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    ...
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    ...

6 years agotest-execute: simplify checks if grep output is empty
Zbigniew Jędrzejewski-Szmek [Thu, 22 Mar 2018 07:42:02 +0000 (08:42 +0100)] 
test-execute: simplify checks if grep output is empty

grep already indicates if it matched anything by return value.
Additional advantage is then that if the test fails, the unexpected
matching lines are visible in the log output.

6 years agotests: skip udev-test when perl is not installed
Zbigniew Jędrzejewski-Szmek [Thu, 22 Mar 2018 07:34:21 +0000 (08:34 +0100)] 
tests: skip udev-test when perl is not installed

6 years agoseccomp: add mmap and address family restrictions for MIPS (#8547)
James Cowgill [Thu, 22 Mar 2018 14:40:44 +0000 (14:40 +0000)] 
seccomp: add mmap and address family restrictions for MIPS (#8547)

6 years agoMerge pull request #8531 from poettering/dhcp-server-mini-fixes
Lennart Poettering [Thu, 22 Mar 2018 14:36:48 +0000 (15:36 +0100)] 
Merge pull request #8531 from poettering/dhcp-server-mini-fixes

some minor tweaks to sd-dhcp-server

6 years agoHACKING: small umask tweak for the rootpw (#8541)
Lennart Poettering [Thu, 22 Mar 2018 14:36:01 +0000 (15:36 +0100)] 
HACKING: small umask tweak for the rootpw (#8541)

6 years agounits: disable systemd-time-sync-wait inside containers (#8537)
Peter A. Bigot [Thu, 22 Mar 2018 02:27:27 +0000 (21:27 -0500)] 
units: disable systemd-time-sync-wait inside containers (#8537)

Fixes #8535

6 years agodoc/HACKING: show command to set root password in image (#8540)
Peter A. Bigot [Wed, 21 Mar 2018 22:56:33 +0000 (17:56 -0500)] 
doc/HACKING: show command to set root password in image (#8540)

Fixes #8538

6 years agomain: add NoNewPrivileges config option (#8475)
juergbi [Wed, 21 Mar 2018 22:41:19 +0000 (23:41 +0100)] 
main: add NoNewPrivileges config option (#8475)

This makes it possible to disable new privileges for the whole system.

6 years agoparse-util: similar to safe_atou16_full() add safe_atou_full() 8534/head
Lennart Poettering [Wed, 21 Mar 2018 21:31:40 +0000 (22:31 +0100)] 
parse-util: similar to safe_atou16_full() add safe_atou_full()

What's good for uint16_t is also good for unsigned.

This is preparation for: #8140

6 years agoparse-util: introduce safe_atou16_full()
Lennart Poettering [Wed, 21 Mar 2018 21:27:19 +0000 (22:27 +0100)] 
parse-util: introduce safe_atou16_full()

safe_atou16_full() is like safe_atou16() but also takes a base
parameter. safe_atou16() is then implemented as inline function on top
of it, passing 0 as base. Similar safe_atoux16() is reworked as inline
function too, with 16 as base.

6 years agoman: watchdog documentation improvements 8533/head
Lennart Poettering [Wed, 21 Mar 2018 21:00:21 +0000 (22:00 +0100)] 
man: watchdog documentation improvements

6 years agoman: document that there's a second phase of shutdown in bootup(7)
Lennart Poettering [Wed, 21 Mar 2018 19:57:06 +0000 (20:57 +0100)] 
man: document that there's a second phase of shutdown in bootup(7)

6 years agodhcp-server: don't propagate erros up the event loop 8531/head
Lennart Poettering [Wed, 21 Mar 2018 19:30:56 +0000 (20:30 +0100)] 
dhcp-server: don't propagate erros up the event loop

If we can't send a message this is no reason to completely abort the
event handler.

Issue identified by Nandor Han <nandor.han@ge.com>, Sebastian Reichel
<sebastian.reichel@collabora.co.uk>.

Replaces: #8525

6 years agodhcp-sever: check properly for invalid fds
Lennart Poettering [Wed, 21 Mar 2018 19:30:29 +0000 (20:30 +0100)] 
dhcp-sever: check properly for invalid fds

We generally just compare for negativity, not for equlity to -1, let's
do so here too.

6 years agodhcp_server_handle_message: don't pretend there was a difference between return code...
Lennart Poettering [Wed, 21 Mar 2018 19:29:43 +0000 (20:29 +0100)] 
dhcp_server_handle_message: don't pretend there was a difference between return code 0 or 1

We ignore the difference anyway, hence let's systematically return 0.

6 years agodhcp-server: reduce level of indentation a bit
Lennart Poettering [Wed, 21 Mar 2018 19:29:07 +0000 (20:29 +0100)] 
dhcp-server: reduce level of indentation a bit

Less indentation is good, let's do that where it's easy.

6 years agodhcp-server: introduce log_dhcp_server_errno()
Lennart Poettering [Wed, 21 Mar 2018 19:28:01 +0000 (20:28 +0100)] 
dhcp-server: introduce log_dhcp_server_errno()

Sometimes we want to print the error number, hence do so properly, and
avoid to use strerror() which is not reentrant.

6 years agodhcp-server: don't assign sendmsg() return value to "int"
Lennart Poettering [Wed, 21 Mar 2018 19:25:46 +0000 (20:25 +0100)] 
dhcp-server: don't assign sendmsg() return value to "int"

The type is "ssize_t", not "int", let's be accurate about that, as these
types are different on some archs.

Given that we don't actually care about the return value reall, drop
the whole assignment, just check if negative.

6 years agoconf-parse: small prettification 8530/head
Lennart Poettering [Fri, 23 Feb 2018 19:50:22 +0000 (20:50 +0100)] 
conf-parse: small prettification

Let's use first_word() instead of startswith(), it's more explanatory
and a bit more correct. Also, let's use the return value instead of
adding +9 when looking for the second part of the directive.

6 years agoconf-parser: let's explicitly deprecate .include in unit files
Lennart Poettering [Fri, 23 Feb 2018 19:46:38 +0000 (20:46 +0100)] 
conf-parser: let's explicitly deprecate .include in unit files

.include lines are already deprecated somewhat, and for example
explicitly not mentioned in the documentation for this reason. Let's get
one step further and generatea warning when we encounter them (but still
process them).

Why are they deprecated? Because they are semantically awful — they
complicate stat() based mtime checks for configuration files and they
allow arbitrary loops we currently have zero protection against and
really shouldn't have to have.

6 years agologind: drop obsolete comment 8529/head
Lennart Poettering [Wed, 21 Mar 2018 18:06:59 +0000 (19:06 +0100)] 
logind: drop obsolete comment

The code matching this comment was removed in
a50df72b37ce2a7caf7775c70d18c3f9504b9e80 in 2014, let's drop the comment
too.

6 years agologind: use manager_get_user_by_pid() where appropriate
Lennart Poettering [Wed, 21 Mar 2018 18:06:21 +0000 (19:06 +0100)] 
logind: use manager_get_user_by_pid() where appropriate

The current code reimplemented something like the
manager_get_user_by_pid() logic on its own, manually. Let's unify this.

6 years agologind: rework manager_get_{user|session}_by_pid() a bit
Lennart Poettering [Wed, 21 Mar 2018 18:04:45 +0000 (19:04 +0100)] 
logind: rework manager_get_{user|session}_by_pid() a bit

Let's make sure we always initialize the return value if we return
non-negative.

Just a matter of coding style: we should always initialize our return
values when we return >= 0, and leave them unclobbered if we return < 0.

6 years agoWhen mangling names, optionally emit a warning (#8400)
Zbigniew Jędrzejewski-Szmek [Wed, 21 Mar 2018 14:26:47 +0000 (15:26 +0100)] 
When mangling names, optionally emit a warning (#8400)

The warning is not emitted for absolute paths like /dev/sda or /home, which are
converted to .device and .mount unit names without any fuss.

Most of the time it's unlikely that users use invalid unit names on purpose,
so let's warn them. Warnings are silenced when --quiet is used.

$ build/systemctl show -p Id hello@foo-bar/baz
Invalid unit name "hello@foo-bar/baz" was escaped as "hello@foo-bar-baz" (maybe you should use systemd-escape?)
Id=hello@foo-bar-baz.service

$ build/systemd-run --user --slice foo-bar/baz --unit foo-bar/foo true
Invalid unit name "foo-bar/foo" was escaped as "foo-bar-foo" (maybe you should use systemd-escape?)
Invalid unit name "foo-bar/baz" was escaped as "foo-bar-baz" (maybe you should use systemd-escape?)
Running as unit: foo-bar-foo.service

Fixes #8302.

6 years agoMerge pull request #8523 from keszybz/oss-fuzz-fixes
Lennart Poettering [Wed, 21 Mar 2018 14:26:25 +0000 (15:26 +0100)] 
Merge pull request #8523 from keszybz/oss-fuzz-fixes

A fix for oss-fuzz msan ListenNetlink workaround

6 years agouser-util: add new wrappers for reading/writing {passwd,shadow,gshadow} database...
Franck Bui [Wed, 21 Mar 2018 14:26:02 +0000 (15:26 +0100)] 
user-util: add new wrappers for reading/writing {passwd,shadow,gshadow} database files (#8521)

The API povided by the glibc is too error-prone as one has to deal directly
with errno in order to detect if errors occured.

Suggested by Zbigniew.

6 years agofuzz-unit-file: fix check if ListenNetlink is used 8523/head
Zbigniew Jędrzejewski-Szmek [Wed, 21 Mar 2018 12:16:25 +0000 (13:16 +0100)] 
fuzz-unit-file: fix check if ListenNetlink is used

A line may contain leading spaces which we should skip.
Fixes https://oss-fuzz.com/v2/issue/5546208027213824/7049.

6 years agoshared/conf-parser: fix outdated comment
Zbigniew Jędrzejewski-Szmek [Wed, 21 Mar 2018 12:15:01 +0000 (13:15 +0100)] 
shared/conf-parser: fix outdated comment

6 years agoac-power: add simple getopt() argument parsing to systemd-ac-power (#8516)
Lennart Poettering [Wed, 21 Mar 2018 11:52:18 +0000 (12:52 +0100)] 
ac-power: add simple getopt() argument parsing to systemd-ac-power (#8516)

We should probably do that for all our tools, hence fill in this gap
here.

6 years agoMerge pull request #8508 from poettering/more-cocci
Zbigniew Jędrzejewski-Szmek [Wed, 21 Mar 2018 11:50:49 +0000 (12:50 +0100)] 
Merge pull request #8508 from poettering/more-cocci

two new coccinelle rules files and their results

6 years agotime-sync-wait: add service (#8494)
Peter A. Bigot [Wed, 21 Mar 2018 11:42:04 +0000 (06:42 -0500)] 
time-sync-wait: add service (#8494)

This one-shot service waits until the kernel time has been set to
synchronized.

6 years agoMerge pull request #8313 from alexgartrell/compression-threshold
Lennart Poettering [Wed, 21 Mar 2018 11:37:54 +0000 (12:37 +0100)] 
Merge pull request #8313 from alexgartrell/compression-threshold

Compression threshold

6 years agoMerge pull request #8368 from yuwata/nss-systemd-getpwent
Lennart Poettering [Wed, 21 Mar 2018 11:36:47 +0000 (12:36 +0100)] 
Merge pull request #8368 from yuwata/nss-systemd-getpwent

nss-systemd: make dynamic users enumerable by `getent`

6 years agodissect: add dissect_image_and_warn() that unifies error message generation for disse...
Lennart Poettering [Wed, 21 Mar 2018 11:10:01 +0000 (12:10 +0100)] 
dissect: add dissect_image_and_warn() that unifies error message generation for dissect_image() (#8517)

6 years agomove MANAGER_IS_RELOADING() check into manager_recheck_{dbus|journal}() (#8510)
Lennart Poettering [Wed, 21 Mar 2018 11:03:45 +0000 (12:03 +0100)] 
move MANAGER_IS_RELOADING() check into manager_recheck_{dbus|journal}() (#8510)

Let's better check this inside of the call than before it, so that we
never issue this while reloading, even should these calls be called due
to other reasons than just the unit notify.

This makes sure the reload state is unset a bit earlier in
manager_reload() so that we can safely call this function from there and
they do the right thing.

Follow-up for e63ebf71edd7947f29389c72e851d8df5c7bedda.

6 years agofileio: port parse_env_file_internal() to use _cleanup_free_ (#8511)
Lennart Poettering [Wed, 21 Mar 2018 10:59:56 +0000 (11:59 +0100)] 
fileio: port parse_env_file_internal() to use _cleanup_free_ (#8511)

6 years agov3: Properly parsing SCSI Hyperv devices (#8509)
Long Li [Wed, 21 Mar 2018 10:51:28 +0000 (03:51 -0700)] 
v3: Properly parsing SCSI Hyperv devices (#8509)

Since 2016, Hyperv devices moved to using standard way to expose UUID to sysfs. Fix the parsing function to work with the newer format.

Change log:
v2: changed code to work with both old and new path format
v3: changed guid_str_len type to size_t, fixed length in char guid[] in handle_scsi_hyperv()

6 years agoMerge pull request #8487 from keszybz/oss-fuzz-fixes
Lennart Poettering [Wed, 21 Mar 2018 10:50:57 +0000 (11:50 +0100)] 
Merge pull request #8487 from keszybz/oss-fuzz-fixes

Oss fuzz fixes, another batch

6 years agoselinux: let's fully (and statically) initialize log callback union (#8512)
Lennart Poettering [Wed, 21 Mar 2018 10:48:40 +0000 (11:48 +0100)] 
selinux: let's fully (and statically) initialize log callback union (#8512)

We can make this const and static, and initialize this ahead of time and
fully, hence let's do that.

6 years agoMerge pull request #8513 from poettering/journal-minifixes
Zbigniew Jędrzejewski-Szmek [Wed, 21 Mar 2018 10:48:06 +0000 (11:48 +0100)] 
Merge pull request #8513 from poettering/journal-minifixes

two minor journal fixes

6 years agosd-bus: drop fd_nonblock() calls that are implied by rearrange_stdio() (#8514)
Lennart Poettering [Wed, 21 Mar 2018 10:46:49 +0000 (11:46 +0100)] 
sd-bus: drop fd_nonblock() calls that are implied by rearrange_stdio() (#8514)

6 years agocoredumpctl: drop unnecessary NULL initialization, and use const where possible ...
Lennart Poettering [Wed, 21 Mar 2018 10:46:08 +0000 (11:46 +0100)] 
coredumpctl: drop unnecessary NULL initialization, and use const where possible (#8515)

6 years agodoc: update TODO 8368/head
Yu Watanabe [Thu, 8 Mar 2018 03:53:43 +0000 (12:53 +0900)] 
doc: update TODO

6 years agonss-systemd: make dynamic users enumerable by `getent`
Yu Watanabe [Wed, 21 Mar 2018 04:39:03 +0000 (13:39 +0900)] 
nss-systemd: make dynamic users enumerable by `getent`

This adds `setpwent()`, `getpwent_r()`, `endpwent()`, `setgrent()`,
`getgrent_r()`, and `endgrent()` interfaces to nss-systemd library.
Thus, dynamic users can be enumerated by e.g. `getent passwd` command.

6 years agonss-systemd: define dynamic user properties
Yu Watanabe [Tue, 6 Mar 2018 06:39:26 +0000 (15:39 +0900)] 
nss-systemd: define dynamic user properties

6 years agonss-systemd: cleanup bypassing dbus logic
Yu Watanabe [Tue, 6 Mar 2018 12:31:16 +0000 (21:31 +0900)] 
nss-systemd: cleanup bypassing dbus logic

6 years agocore: add new dbus method GetDynamicUsers
Yu Watanabe [Wed, 21 Mar 2018 04:11:01 +0000 (13:11 +0900)] 
core: add new dbus method GetDynamicUsers

This intruduces a new dbus method GetDynamicUsers for systemd1.Manager,
which enumerates all dynamic users realized in the system.

6 years agoRestore naming of IOPRIO_PRIO defines from linux/ioprio.h 8487/head
Zbigniew Jędrzejewski-Szmek [Tue, 20 Mar 2018 23:36:35 +0000 (00:36 +0100)] 
Restore naming of IOPRIO_PRIO defines from linux/ioprio.h

This undoes part of 10062bbc35a28e95897f66fa5f4991b9b1f9df5d.

6 years agocore/load-fragment: reject overly long paths early
Zbigniew Jędrzejewski-Szmek [Mon, 19 Mar 2018 14:43:35 +0000 (15:43 +0100)] 
core/load-fragment: reject overly long paths early

No need to go through the specifier_printf() if the path is already too long in
the unexpanded form (since specifiers increase the length of the string in all
practical cases).

In the oss-fuzz test case, valgrind reports:
  total heap usage: 179,044 allocs, 179,044 frees, 72,687,755,703 bytes allocated
and the original config file is ~500kb. This isn't really a security issue,
since the config file has to be trusted any way, but just a matter of
preventing accidental resource exhaustion.

https://oss-fuzz.com/v2/issue/4651449704251392/6977

While at it, fix order of arguments in the neighbouring log_syntax() call.

6 years agobasic/calendarspec: add check for repeat values that would overflow
Zbigniew Jędrzejewski-Szmek [Mon, 19 Mar 2018 08:21:02 +0000 (09:21 +0100)] 
basic/calendarspec: add check for repeat values that would overflow

https://oss-fuzz.com/v2/issue/4651449704251392/7004

6 years agojournal: don't insist that the journal file header's boot ID matches the last entry 8513/head
Lennart Poettering [Tue, 20 Mar 2018 19:41:30 +0000 (20:41 +0100)] 
journal: don't insist that the journal file header's boot ID matches the last entry

We update the boot ID whenever the file is opened for writing (i.e. set
to ONLINE stat), even if we never write a single entry to it. Hence,
don't insist that the last entry's boot ID matches the file header.

As pointed out by Matthijs van Duin:

https://lists.freedesktop.org/archives/systemd-devel/2018-March/040499.html

6 years agojournal-file: drop unused tail_entry_monotonic_valid field.
Lennart Poettering [Tue, 20 Mar 2018 19:37:59 +0000 (20:37 +0100)] 
journal-file: drop unused tail_entry_monotonic_valid field.

As pointed out by Matthijs van Duin:

https://lists.freedesktop.org/archives/systemd-devel/2018-March/040499.html

6 years agojournal: make the compression threshold tunable 8313/head
Alex Gartrell [Tue, 27 Feb 2018 17:37:23 +0000 (09:37 -0800)] 
journal: make the compression threshold tunable

Allow a user to set a number of bytes as Compress to use as the compression
threshold.

6 years agococcinelle: always use fcntl(fd, FD_DUPFD, 3) instead of dup(fd) 8508/head
Lennart Poettering [Tue, 20 Mar 2018 19:57:37 +0000 (20:57 +0100)] 
coccinelle: always use fcntl(fd, FD_DUPFD, 3) instead of dup(fd)

Let's avoid fds 0…2 for safety reasons.

6 years agococcinelle: make use of DIV_ROUND_UP() wherever appropriate
Lennart Poettering [Tue, 20 Mar 2018 19:36:09 +0000 (20:36 +0100)] 
coccinelle: make use of DIV_ROUND_UP() wherever appropriate

Let's use our macros where we can

6 years agojournal: provide compress_threshold_bytes parameter
Alex Gartrell [Tue, 27 Feb 2018 05:56:35 +0000 (21:56 -0800)] 
journal: provide compress_threshold_bytes parameter

Previously the compression threshold was hardcoded to 512, which meant that
smaller values wouldn't be compressed. This left some storage savings on the
table, so instead, we make that number tunable.

6 years agobasic/fs-util: skip fsync_directory_of_file() if /proc/self/fd/ is not available...
Zbigniew Jędrzejewski-Szmek [Tue, 20 Mar 2018 17:20:01 +0000 (18:20 +0100)] 
basic/fs-util: skip fsync_directory_of_file() if /proc/self/fd/ is not available (#8386)

When systemd is running under lorax (in Fedora compose process), it'd think that
it failed to write /etc/machine-id, even though the write succeeded, because
fsync_directory_of_file() would fail, because /proc/self/fd/ is not available.
fsync_directory_of_file() is mostly an additional safety net, so I think it's best
to just silently ignore the error.

Strace of pid1:
35791 stat("/etc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
35791 openat(AT_FDCWD, "/etc/machine-id", O_RDWR|O_CREAT|O_NOCTTY|O_CLOEXEC, 0444) = 3
35791 umask(022)                        = 000
35791 read(3, "", 38)                   = 0
35791 openat(AT_FDCWD, "/var/lib/dbus/machine-id", O_RDONLY|O_NOCTTY|O_NOFOLLOW|O_CLOEXEC) = -1 ENOENT (No such file o
r directory)
35791 openat(AT_FDCWD, "/sys/class/dmi/id/product_name", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
35791 openat(AT_FDCWD, "/sys/class/dmi/id/sys_vendor", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
35791 openat(AT_FDCWD, "/sys/class/dmi/id/board_vendor", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
35791 openat(AT_FDCWD, "/sys/class/dmi/id/bios_vendor", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
35791 access("/proc/xen", F_OK)         = -1 ENOENT (No such file or directory)
35791 openat(AT_FDCWD, "/sys/hypervisor/type", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
35791 openat(AT_FDCWD, "/proc/cpuinfo", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
35791 getrandom("\xb8\x82\xed\xd4\x35\x11\xd0\xeb\xa6\x79\xd7\x31\x6e\x7b\x99\xce", 16, GRND_NONBLOCK) = 16
35791 writev(2, [{iov_base="Initializing machine ID from random generator.", iov_len=46}, {iov_base="\n", iov_len=1}],
 2) = 47
35791 lseek(3, 0, SEEK_SET)             = 0
35791 ftruncate(3, 0)                   = 0
35791 write(3, "b882edd4351140eba679d7316e7b99ce\n", 33) = 33
35791 fsync(3)                          = 0
35791 fstat(3, {st_mode=S_IFREG|0444, st_size=33, ...}) = 0
35791 readlinkat(AT_FDCWD, "/proc/self/fd/3", 0x564df8c694c0, 99) = -1 ENOENT (No such file or directory)
35791 close(3)                          = 0
35791 umask(022)                        = 022
35791 openat(AT_FDCWD, "/run/machine-id", O_WRONLY|O_CREAT|O_NOCTTY|O_TRUNC|O_CLOEXEC, 0444) = 3
35791 write(3, "b882edd4351140eba679d7316e7b99ce\n", 33) = 33
35791 close(3)                          = 0
35791 umask(022)                        = 022
35791 mount("/run/machine-id", "/etc/machine-id", NULL, MS_BIND, NULL) = 0
35791 writev(2, [{iov_base="Installed transient /etc/machine-id file.", iov_len=41}, {iov_base="\n", iov_len=1}], 2) = 42
35791 mount(NULL, "/etc/machine-id", NULL, MS_RDONLY|MS_REMOUNT|MS_BIND, NULL) = 0

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

6 years agoMerge pull request #8440 from keszybz/use-cleanup-in-efi
Lennart Poettering [Tue, 20 Mar 2018 17:17:57 +0000 (18:17 +0100)] 
Merge pull request #8440 from keszybz/use-cleanup-in-efi

Use cleanup in sd-boot

6 years agonspawn: move network namespace creation to a separate step (#8430)
Zbigniew Jędrzejewski-Szmek [Tue, 20 Mar 2018 17:07:17 +0000 (18:07 +0100)] 
nspawn: move network namespace creation to a separate step (#8430)

Fixes #8427.

Unsharing the namespace in a separate step changes the ownership of
/proc/net/ip_tables_names (and related files) from nobody:nobody to
root:root. See [1] and [2] for all the details.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f13f2aeed154da8e48f90b85e720f8ba39b1e881
[2] https://bugzilla.netfilter.org/show_bug.cgi?id=1064#c9

6 years agoMerge pull request #8106 from dqminh/route-expires-kernel
Lennart Poettering [Tue, 20 Mar 2018 16:38:30 +0000 (17:38 +0100)] 
Merge pull request #8106 from dqminh/route-expires-kernel

move route expiration to kernel

6 years agomkosi: set file permissions in copy of source tree (#8370)
Filipe Brandenburger [Tue, 20 Mar 2018 16:21:36 +0000 (09:21 -0700)] 
mkosi: set file permissions in copy of source tree (#8370)

Meson keeps permissions around during the build, so details of how umask
was set when cloning the original git tree will leak all the way to the
installed files in the mkosi image.

So reset the permissions of the files in the copy of the tree before
starting the build.

Also set the umask explicitly.

Tested by creating a mkosi image and booting it on a tree that was
cloned with a umask of 027, confirmed that the *.target files were not
created as world-unreadable anymore.