platform/upstream/systemd.git
5 years agomount-util: show mount source in failure log message (#10312)
Lennart Poettering [Mon, 8 Oct 2018 18:59:11 +0000 (20:59 +0200)]
mount-util: show mount source in failure log message (#10312)

5 years agoptyfwd: voidify more calls (#10310)
Lennart Poettering [Mon, 8 Oct 2018 18:53:35 +0000 (20:53 +0200)]
ptyfwd: voidify more calls (#10310)

5 years agoMerge pull request #10159 from poettering/killall-spree-kernel-thread
Zbigniew Jędrzejewski-Szmek [Mon, 8 Oct 2018 18:12:18 +0000 (20:12 +0200)]
Merge pull request #10159 from poettering/killall-spree-kernel-thread

killall.c fixes regarding kernel thread detection

5 years agoMerge pull request #10281 from yuwata/follow-up-10277
Zbigniew Jędrzejewski-Szmek [Mon, 8 Oct 2018 16:42:47 +0000 (18:42 +0200)]
Merge pull request #10281 from yuwata/follow-up-10277

meson: add more compile tests

5 years agomeson: use c_args in generator scripts (#10289)
Yu Watanabe [Mon, 8 Oct 2018 16:37:06 +0000 (01:37 +0900)]
meson: use c_args in generator scripts (#10289)

May be useful in some cases.

5 years agonspawn: optionally don't mount a tmpfs over /tmp (#10294)
Lennart Poettering [Mon, 8 Oct 2018 16:32:03 +0000 (18:32 +0200)]
nspawn: optionally don't mount a tmpfs over /tmp (#10294)

nspawn: optionally, don't mount a tmpfs on /tmp

Fixes: #10260

5 years agomeson: only build src/shared/tests.c if tests are enabled
Michael Olbrich [Sun, 30 Sep 2018 14:08:14 +0000 (16:08 +0200)]
meson: only build src/shared/tests.c if tests are enabled

It's only needed for tests and leaks build directories into
libsystemd-shared.

5 years agolibsystemd: drop *_unrefp from symbol list
Yu Watanabe [Mon, 1 Oct 2018 19:45:05 +0000 (04:45 +0900)]
libsystemd: drop *_unrefp from symbol list

Follow-up for 3f608087bd57c4d9134754cdad562fa057a97c9e and
6083c4b763eb3c890396974335a47b880a55cdfd.

5 years agologind: ensure seat0 CanGraphical state is written
Ray Strode [Sat, 6 Oct 2018 10:08:31 +0000 (06:08 -0400)]
logind: ensure seat0 CanGraphical state is written

For non-`seat0` seats, attaching a graphics card to a seat can
lead to it getting created. This is because the graphics device
is a "master device" which means that device is a seat-defining
device.

`seat0` may get created, even before the graphics driver is loaded,
though. This is because the graphics driver is loaded
asynchronously at startup, and `seat0` is the primary seat of
system, associated with the system VTs.

When a graphics card is attached to a seat the `CanGraphical`
property on that seat will flip to `true`.

For seats that haven't been created yet (non-`seat0` seats), this
leads to `seat_start` getting called which ultimately causes the
seat to get serialized to `/run/systemd/seats`.

For `seat0`, which is already created, `seat_start` will return
immediately, which means the updated `CanGraphical` state will
never get written to `/run/systemd/seats`.

The end result is that clients querying `sd_seat_can_graphical`
won't get the correct answer for `seat0` in cases where the
graphics device takes a long time to load until some other peice
of seat state is updated.

This commit fixes the problem by calling `seat_save` explicitly
for already running seats at the time a graphics device is
attached.

5 years agoMerge pull request #10293 from poettering/cryptsetup-fixes
Yu Watanabe [Sat, 6 Oct 2018 14:35:28 +0000 (23:35 +0900)]
Merge pull request #10293 from poettering/cryptsetup-fixes

two tiny cryptsetup-generator fixes

5 years agocryptsetup: use PATH_IN_SET() instead of STR_IN_SET() when comparing paths
Lennart Poettering [Fri, 5 Oct 2018 20:39:02 +0000 (22:39 +0200)]
cryptsetup: use PATH_IN_SET() instead of STR_IN_SET() when comparing paths

It's formally more correct.

5 years agocryptsetup: don't use %m if there's no error to show
Lennart Poettering [Fri, 5 Oct 2018 20:37:37 +0000 (22:37 +0200)]
cryptsetup: don't use %m if there's no error to show

We are not the ones receiving an error here, but the ones generating it,
hence we shouldn't show it with %m, that's just confusing, as it
suggests we received an error from some other call.

5 years agopath-util: fix path_simplify() with kill_dots and "."
Thomas Haller [Fri, 5 Oct 2018 11:14:38 +0000 (13:14 +0200)]
path-util: fix path_simplify() with kill_dots and "."

Previously, together with kill_dots true, patch like
".", "./.", ".//.//" would all return an empty string.

That is wrong. There must be one "." left to reference
the current directory.

Also, the comment with examples was wrong.

5 years agocore/dbus-execute: fix parsing CPUScheduling* and Nice for transient services
Yu Watanabe [Fri, 5 Oct 2018 14:43:08 +0000 (23:43 +0900)]
core/dbus-execute: fix parsing CPUScheduling* and Nice for transient services

Fixes #10290.

5 years ago * hack around deficiencies in prctl() PR_SET_MM_*
Frank Schaefer [Thu, 4 Oct 2018 21:06:16 +0000 (16:06 -0500)]
 * hack around deficiencies in prctl() PR_SET_MM_*

5 years agoMerge pull request #10134 from keszybz/test-runner
Lennart Poettering [Fri, 5 Oct 2018 18:35:30 +0000 (20:35 +0200)]
Merge pull request #10134 from keszybz/test-runner

Some test-related fixed and a test runner for installed tests

5 years agoman: fix explanation about UID/GID field in tmpfiles.d(5)
Yu Watanabe [Fri, 5 Oct 2018 09:33:40 +0000 (18:33 +0900)]
man: fix explanation about UID/GID field in tmpfiles.d(5)

Fixes #9495.

5 years agoMerge pull request #10117 from keszybz/undynamicify
Lennart Poettering [Fri, 5 Oct 2018 15:41:56 +0000 (17:41 +0200)]
Merge pull request #10117 from keszybz/undynamicify

Set DynamicUser=no for networkd, resolved, timesyncd

5 years agoman/systemd.exec: MountFlags=shared behaviour was changed (fixed?)
Alan Jenkins [Fri, 14 Sep 2018 10:57:57 +0000 (11:57 +0100)]
man/systemd.exec: MountFlags=shared behaviour was changed (fixed?)

The behaviour described *was* observed on Fedora 28
(systemd-238-9.git0e0aa59), with and without SELinux.  I don't actually
know why though!  It contradicts my understanding of the code, including an
explicit comment in the code.

Testing in a VM upgraded to v239-792-g1327f272d, this behaviour goes away.

Test case:

# /etc/systemd/system/mount-test.service
[Service]
MountFlags=shared
Type=oneshot
ExecStart=/usr/bin/ls -l /proc/1/ns/mnt /proc/self/ns/mnt
ExecStart=/usr/bin/grep ext4 /proc/self/mountinfo

Weird old behaviour: new mount namespace but / is fully shared.

lrwxrwxrwx. 1 root root 0 Sep 14 11:18 /proc/1/ns/mnt -> mnt:[4026531840]
lrwxrwxrwx. 1 root root 0 Sep 14 11:48 /proc/self/ns/mnt ->
mnt:[4026532851]

968 967 253:0 / / rw,relatime shared:1 - ext4 /dev/mapper/alan_dell_2016...

Current behaviour: / is not fully shared

lrwxrwxrwx. 1 root root 0 Sep 14 11:39 /proc/1/ns/mnt -> mnt:[4026531840]
lrwxrwxrwx. 1 root root 0 Sep 14 11:41 /proc/self/ns/mnt ->
mnt:[4026532329]

591 558 8:3 / / rw,relatime shared:313 master:1 - ext4 /dev/sda3 rw,secl...

5 years agoMerge pull request #10094 from keszybz/wants-loading
Lennart Poettering [Fri, 5 Oct 2018 15:36:31 +0000 (17:36 +0200)]
Merge pull request #10094 from keszybz/wants-loading

Fix bogus fragment paths in units in .wants/.requires

5 years agoMerge pull request #10152 from yuwata/udev-use-extract
Lennart Poettering [Fri, 5 Oct 2018 15:11:43 +0000 (17:11 +0200)]
Merge pull request #10152 from yuwata/udev-use-extract

udev: small cleanups

5 years agonetworkd-link: Don't start a DHCPv6 informational exchange automatically
Patrik Flykt [Tue, 2 Oct 2018 18:48:22 +0000 (12:48 -0600)]
networkd-link: Don't start a DHCPv6 informational exchange automatically

When a link is configured, wait until there is a Router Advertisement before
attempting to start DHCPv6. The intended DHCPv6 mode will be evaluated in
ndisc_router_handler() in networkd-ndisc.c.

5 years agosd-resolve: make struct addrinfo defined
Yu Watanabe [Fri, 5 Oct 2018 05:40:44 +0000 (14:40 +0900)]
sd-resolve: make struct addrinfo defined

5 years agomeson: also run compile tests for not installed systemd headers
Yu Watanabe [Fri, 5 Oct 2018 05:29:05 +0000 (14:29 +0900)]
meson: also run compile tests for not installed systemd headers

Follow-up for b62f9008668a5330c61b4de7e0d48147bcd1edf7 (#10277).

5 years agotest-execute: add a test for systemcall filter (#10273)
Yu Watanabe [Fri, 5 Oct 2018 05:46:30 +0000 (14:46 +0900)]
test-execute: add a test for systemcall filter (#10273)

This adds a test for issue #9939 which is fixed by
a5404992cc7724ebf7572a0aa89d9fdb26ce0b62 (#9942).

5 years agosd-netlink: sort headers and include net/ethernet.h
Yu Watanabe [Fri, 5 Oct 2018 05:27:32 +0000 (14:27 +0900)]
sd-netlink: sort headers and include net/ethernet.h

5 years agodhcp6: don't include internal header "sparse-endian.h" in "sd-dhcp6-client.h"
Thomas Haller [Thu, 4 Oct 2018 16:54:58 +0000 (18:54 +0200)]
dhcp6: don't include internal header "sparse-endian.h" in "sd-dhcp6-client.h"

Arguably, libsystemd-network is (still) entirely internal API.
However there is the aim of maybe exposing it as public API.
For that reason, it cannot include internal headers from
"src/basic/".

Note how files "src/systemd/sd-*.h" don't include any systemd
headers which don't themself have an "sd-" prefix.

Fixes: d89a400ed664e0b57fd8667db5637792a185e831

5 years agoAdd DOCUMENTATION_URL as a standard value for /etc/os-release
Stephen Gallagher [Thu, 4 Oct 2018 12:19:18 +0000 (07:19 -0500)]
Add DOCUMENTATION_URL as a standard value for /etc/os-release

It is very useful for distributions to be able to set a primary
documentation URL in a standard location so that users and
applications on the system can identify it. For example, many
headless systems these days use the "Cockpit" admin console. It
would be ideal if we could specify this location directly in the
os-release file so that any application or service could have a
well-known location for retrieving this and displaying it
appropriately. Users could likewise examine /etc/os-release to
learn this location.

Related: https://github.com/cockpit-project/cockpit/issues/10198

Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
5 years agoMerge pull request #10263 from keszybz/test-fs-util-generalization
Lennart Poettering [Thu, 4 Oct 2018 11:23:41 +0000 (13:23 +0200)]
Merge pull request #10263 from keszybz/test-fs-util-generalization

test-fs-util generalization

5 years agotest: fix memleak in test-fs-util
Yu Watanabe [Thu, 4 Oct 2018 07:22:11 +0000 (16:22 +0900)]
test: fix memleak in test-fs-util

Fixes #10267 and CID#1395997.

5 years agotest-fs-util: run all tests on the specified directory
Zbigniew Jędrzejewski-Szmek [Wed, 3 Oct 2018 12:08:49 +0000 (14:08 +0200)]
test-fs-util: run all tests on the specified directory

This removes $RENAME_NOREPLACE_DIR and uses a command-line argument instead.
Logging is added, and tests are skipped if we get -EPERM or friends
(which happens on FAT and other filesystems).

5 years agotest-fs-util: simplify testdir creation
Zbigniew Jędrzejewski-Szmek [Wed, 3 Oct 2018 11:42:08 +0000 (13:42 +0200)]
test-fs-util: simplify testdir creation

5 years agoMerge pull request #10251 from poettering/renameat-racy
Zbigniew Jędrzejewski-Szmek [Wed, 3 Oct 2018 11:37:53 +0000 (13:37 +0200)]
Merge pull request #10251 from poettering/renameat-racy

rename_noreplace() fallback for file systems where neither RENAME_REPLACE nor link()/unlinkat() is available

5 years agoMerge pull request #10257 from pfl/dhcp6_pd_enable_later_link
Zbigniew Jędrzejewski-Szmek [Wed, 3 Oct 2018 09:04:41 +0000 (11:04 +0200)]
Merge pull request #10257 from pfl/dhcp6_pd_enable_later_link

DHCP6 PD enable later link

5 years agoMerge pull request #10261 from yuwata/test-network
Zbigniew Jędrzejewski-Szmek [Wed, 3 Oct 2018 08:03:34 +0000 (10:03 +0200)]
Merge pull request #10261 from yuwata/test-network

test: small improvements for systemd-networkd-test.py

5 years agotest-execute: also tests under the condition that unshare() is filtered
Yu Watanabe [Wed, 19 Sep 2018 05:17:29 +0000 (14:17 +0900)]
test-execute: also tests under the condition that unshare() is filtered

This is mainly for testing 1beab8b0d0ff2d7d1436b52d4a0c3d56dc908962.

5 years agoMerge pull request #10213 from yuwata/oss-fuzz-10746
Zbigniew Jędrzejewski-Szmek [Wed, 3 Oct 2018 06:31:55 +0000 (08:31 +0200)]
Merge pull request #10213 from yuwata/oss-fuzz-10746

dhcp6: fix issue oss-fuzz#10746

5 years agotest: make systemd-networkd-tests.py run on arbitrary directory
Yu Watanabe [Wed, 3 Oct 2018 05:38:30 +0000 (14:38 +0900)]
test: make systemd-networkd-tests.py run on arbitrary directory

5 years agotest: replace stop+start by restart
Yu Watanabe [Wed, 3 Oct 2018 05:16:24 +0000 (14:16 +0900)]
test: replace stop+start by restart

This suppress the following warnings:
```
Warning: Stopping systemd-networkd.service, but it can still be activated by:
  systemd-networkd.socket
```

5 years agotest: add a testcase for oss-fuzz#10746
Yu Watanabe [Sun, 30 Sep 2018 11:28:19 +0000 (20:28 +0900)]
test: add a testcase for oss-fuzz#10746

5 years agodhcp6: check option length before reading values
Yu Watanabe [Sun, 30 Sep 2018 11:23:58 +0000 (20:23 +0900)]
dhcp6: check option length before reading values

Fixes oss-fuzz#10746
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10746.

5 years agotest: add test for sd_device
Yu Watanabe [Fri, 28 Sep 2018 11:52:48 +0000 (20:52 +0900)]
test: add test for sd_device

5 years agoudev: Allow acpi_index and index to be "0"
Joe Hershberger [Fri, 28 Sep 2018 20:32:35 +0000 (15:32 -0500)]
udev: Allow acpi_index and index to be "0"

0 can be a valid index returned by the BIOS, so allow that by using the
parsing function safe_atolu() to check for errors without excluding the
valid value "0".

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
5 years agonetworkd-dhcp6: Request prefix delegation for a new link
Patrik Flykt [Tue, 2 Oct 2018 18:29:09 +0000 (12:29 -0600)]
networkd-dhcp6: Request prefix delegation for a new link

Request prefix delegation for a new downstream link that is enabled
after any number of upstream DHCPv6 links. Submit the request after
the link has been configured with a link-local address.

If the upstream DHCPv6 client has already been configured to request
prefixes, attempt to re-assign any possible prefixes between the
already existing links and the new one. If no prefixes are yet
acquired, nothing will happen right away and any prefixes will be
distributed after a reply from the DHCPv6 server.

If none of the already existing downstream links have requested
DHCPv6 prefixes to be assigned, enable prefix delegation for each
client and restart them one by one if they are already running. This
causes the DHCPv6 clients to re-acquire addresses and prefixes and
to re-distribute them to all links when receiving an updated
response from their respective DHCPv6 servers. If the DHCPv6 client
in question was not already running, it is set to request prefixes
but not restarted.

When an error occurs while setting or restarting the DHCPv6 client,
log the incident and move over to the next link.

Fixes #9758.

5 years agonetworkd-dhcp: Rename function and reduce its logging
Patrik Flykt [Tue, 2 Oct 2018 18:29:06 +0000 (12:29 -0600)]
networkd-dhcp: Rename function and reduce its logging

Rename dhcp6_verify_link() to dhcp6_get_prefix_delegation() in order
to be clearer in what it does. Reduce unnecessary logging.

5 years agoDocs: Update CoC with email alias for David Strauss
David Strauss [Tue, 2 Oct 2018 16:22:45 +0000 (09:22 -0700)]
Docs: Update CoC with email alias for David Strauss

5 years agoupdate TODO
Lennart Poettering [Tue, 2 Oct 2018 16:00:10 +0000 (18:00 +0200)]
update TODO

5 years agoMerge pull request #10252 from poettering/recv-log-msg-bump
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 15:56:31 +0000 (17:56 +0200)]
Merge pull request #10252 from poettering/recv-log-msg-bump

tiny sd-ravd/sd-ndisc logging fixes

5 years agoMerge pull request #10255 from poettering/hide-new-id128
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 15:54:36 +0000 (17:54 +0200)]
Merge pull request #10255 from poettering/hide-new-id128

drop references to "journalctl --new-id128"

5 years agoMerge pull request #9898 from keszybz/id128
Lennart Poettering [Tue, 2 Oct 2018 15:43:37 +0000 (17:43 +0200)]
Merge pull request #9898 from keszybz/id128

Add a new tool 'systemd-id128'

5 years agoMerge pull request #10249 from keszybz/lgtm-fixes
Lennart Poettering [Tue, 2 Oct 2018 15:42:55 +0000 (17:42 +0200)]
Merge pull request #10249 from keszybz/lgtm-fixes

Fixes for issues found by LGTM

5 years agotree-wide: drop all references to "journalctl --new-id128"
Lennart Poettering [Tue, 2 Oct 2018 14:43:54 +0000 (16:43 +0200)]
tree-wide: drop all references to "journalctl --new-id128"

Let's advertise "systemd-id128 new" instead.

5 years agojournalctl: drop --new-id128 from help and man texts
Lennart Poettering [Tue, 2 Oct 2018 14:42:30 +0000 (16:42 +0200)]
journalctl: drop --new-id128 from help and man texts

Let's remove redundancy and not advertise "journalctl --new-id128"
anymore, now that we have "systemd-id128 new" in a proper tool.

This allows us to reduce the overly large journalctl command set a bit.

Note that this just removes the --help and man text, the call remains
available for compat reasons.

5 years agoupdate TODO
Lennart Poettering [Tue, 2 Oct 2018 14:28:06 +0000 (16:28 +0200)]
update TODO

5 years agosd-radv: EAGAIN is not really unexpected, distinguishit from other errors when logging
Lennart Poettering [Tue, 2 Oct 2018 14:26:50 +0000 (16:26 +0200)]
sd-radv: EAGAIN is not really unexpected, distinguishit from other errors when logging

5 years agosd-ndisc: generate debug log messages on unexpected errors
Lennart Poettering [Tue, 2 Oct 2018 14:25:51 +0000 (16:25 +0200)]
sd-ndisc: generate debug log messages on unexpected errors

We really should make it possible to debug unexpected errors, hence log
something at LOG_DEBUG.

5 years agosd-radv: remove log_radv_warning_errno()
Lennart Poettering [Tue, 2 Oct 2018 14:22:54 +0000 (16:22 +0200)]
sd-radv: remove log_radv_warning_errno()

According to our CODING_STYLE our library code should generally not log
beyond LOG_DEBUG. Let's hence get rid of log_radv_warning_errno() and
just use log_radv_errno() instead.

5 years agotest: add test case for rename_noreplace()
Lennart Poettering [Tue, 2 Oct 2018 14:10:39 +0000 (16:10 +0200)]
test: add test case for rename_noreplace()

5 years agofs-util: add racy RENAME_NOREPLACE fallback using access()
Lennart Poettering [Tue, 2 Oct 2018 11:34:18 +0000 (13:34 +0200)]
fs-util: add racy RENAME_NOREPLACE fallback using access()

Apparently FAT on some recent kernels can't do RENAME_NOREPLACE, and of
course cannot do linkat()/unlinkat() either (as the hard link concept
does not exist on FAT). Add a fallback using an explicit beforehand
faccessat() check. This sucks, but what we can do if the safe operations
are not available?

Fixes: #10063

5 years agofileio: fix error propagation in link_tmpfile()
Lennart Poettering [Tue, 2 Oct 2018 11:34:05 +0000 (13:34 +0200)]
fileio: fix error propagation in link_tmpfile()

5 years agobus-unit-util: fix parsing of IPAddress{Allow,Deny}
Ronny Chevalier [Fri, 21 Sep 2018 13:59:25 +0000 (14:59 +0100)]
bus-unit-util: fix parsing of IPAddress{Allow,Deny}

While the config parser correctly handles the case of multiple IPs,
bus_append_cgroup_property was only parsing one IP,
and it would fail with "Failed to parse IP address prefix" when given
a list of IPs.

5 years agoMerge pull request #10246 from keszybz/fuzz-buss
Lennart Poettering [Tue, 2 Oct 2018 13:45:21 +0000 (15:45 +0200)]
Merge pull request #10246 from keszybz/fuzz-buss

Bus fuzzer

5 years agojournal-upload: add asserts that snprintf does not return an error
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 10:46:31 +0000 (12:46 +0200)]
journal-upload: add asserts that snprintf does not return an error

LGMT complains:
> The size argument of this snprintf call is derived from its return value,
> which may exceed the size of the buffer and overflow.

Let's make sure that r is non-negative. (This shouldn't occur unless the format
string is borked, so let's just add an assert.)
Then, let's reorder the comparison to avoid the potential overflow.

5 years agopid1: remove unnecessary error reassignment
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 10:35:37 +0000 (12:35 +0200)]
pid1: remove unnecessary error reassignment

LGTM was complaining:
> Comparison is always true because r >= 0.

5 years agoshared/install: avoid overwriting 'r' counter with a partial result
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 10:31:13 +0000 (12:31 +0200)]
shared/install: avoid overwriting 'r' counter with a partial result

We want to store either the first error or the total number of changes in 'r'.
Instead, we were overwriting this with the return value from
install_info_traverse().

LGTM complained later in the loop that:
> Comparison is always true because r >= 0.

5 years agoPrettify printing of uuids
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 13:02:04 +0000 (15:02 +0200)]
Prettify printing of uuids

I know this a bit over the top, but I'm following reviewers' requests.

5 years agoman: add man page for systemd-id128
Zbigniew Jędrzejewski-Szmek [Tue, 21 Aug 2018 14:25:21 +0000 (16:25 +0200)]
man: add man page for systemd-id128

5 years agosystemd-id128: a new tool to print machine/boot/invocation/app-specific ids
Zbigniew Jędrzejewski-Szmek [Tue, 21 Aug 2018 14:08:48 +0000 (16:08 +0200)]
systemd-id128: a new tool to print machine/boot/invocation/app-specific ids

The raison d'etre for this program is printing machine-app-specific IDs. We
provide a library function for that, but not a convenient API. We can hardly
ask people to quickly hack their own C programs or call libsystemd through CFFI
in python or another scripting language if they just want to print an ID.

Verb 'new' was already available as 'journalctl --new-id128', but this makes
it more discoverable.

v2:
- rename binary to systemd-id128
- make --app-specific= into a switch that applies to boot-id and machine-id

5 years agosd-id128: add sd_id128_get_boot_app_specific()
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 12:25:24 +0000 (14:25 +0200)]
sd-id128: add sd_id128_get_boot_app_specific()

5 years agojournalctl: move generate_new_id128() to shared
Zbigniew Jędrzejewski-Szmek [Tue, 21 Aug 2018 13:38:04 +0000 (15:38 +0200)]
journalctl: move generate_new_id128() to shared

5 years agoicmp6-util: stop ignoring EAGAIN and EINTR in icmp6_receive
Evgeny Vereshchagin [Mon, 1 Oct 2018 22:37:17 +0000 (22:37 +0000)]
icmp6-util: stop ignoring EAGAIN and EINTR in icmp6_receive

The code handling the errors was originally part of ndisc_recv, which,
being an event handler, would be simply turned off if it returned a negative
error code. It's no longer necessary. Plus, it helps avoid passing
an uninitialized value to radv_send.

Closes https://github.com/systemd/systemd/issues/10223.

5 years agojournal-verify: add comment and silence LGTM warning
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 10:26:23 +0000 (12:26 +0200)]
journal-verify: add comment and silence LGTM warning

5 years agoboot: change multiplication order
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 10:17:21 +0000 (12:17 +0200)]
boot: change multiplication order

LGTM was complaining:
> Multiplication result may overflow 'unsigned int' before it is converted to 'unsigned long'.

5 years agobasic/hexdecoct: check for overflow
Zbigniew Jędrzejewski-Szmek [Tue, 2 Oct 2018 10:15:22 +0000 (12:15 +0200)]
basic/hexdecoct: check for overflow

LGTM was complaining:
> Multiplication result may overflow 'int' before it is converted to 'long'.
Fix this by changing all types to ssize_t and add a check for overflow
while at it.

5 years agobus-message: avoid wrap-around when using length read from message
Zbigniew Jędrzejewski-Szmek [Thu, 23 Aug 2018 12:48:40 +0000 (14:48 +0200)]
bus-message: avoid wrap-around when using length read from message

We would read (-1), and then add 1 to it, call message_peek_body(..., 0, ...),
and when trying to make use of the data.

The fuzzer test case is just for one site, but they all look similar.

v2: fix two UINT8_MAX/UINT32_MAX mismatches founds by LGTM

5 years agobus-message: return -EBADMSG not -EINVAL on invalid !gvariant messages
Zbigniew Jędrzejewski-Szmek [Sat, 11 Aug 2018 09:43:09 +0000 (11:43 +0200)]
bus-message: return -EBADMSG not -EINVAL on invalid !gvariant messages

5 years agofuzz-bus-message: add two test cases that pass now
Zbigniew Jędrzejewski-Szmek [Sat, 11 Aug 2018 09:31:45 +0000 (11:31 +0200)]
fuzz-bus-message: add two test cases that pass now

It seems that they got fixed by one of the patches. Let's add them
just in case.

5 years agobus-message: also properly copy struct signature when skipping
Zbigniew Jędrzejewski-Szmek [Sat, 11 Aug 2018 07:02:48 +0000 (09:02 +0200)]
bus-message: also properly copy struct signature when skipping

The change is similar to that in the previous commit, but I don't have
a reproducer / test case case for this one, so I'm keeping it seperate.

5 years agobus-message: fix skipping of array fields in !gvariant messages
Zbigniew Jędrzejewski-Szmek [Sat, 11 Aug 2018 06:32:20 +0000 (08:32 +0200)]
bus-message: fix skipping of array fields in !gvariant messages

We copied part of the string into a buffer that was off by two.
If the element signature had length one, we'd copy 0 bytes and crash when
looking at the "first" byte. Otherwise, we would crash because strncpy would
not terminate the string.

5 years agobus-message: output debug information about offset troubles
Zbigniew Jędrzejewski-Szmek [Fri, 3 Aug 2018 16:05:27 +0000 (18:05 +0200)]
bus-message: output debug information about offset troubles

5 years agotest-bus-gvariant: turn on debug output
Zbigniew Jędrzejewski-Szmek [Fri, 3 Aug 2018 16:04:02 +0000 (18:04 +0200)]
test-bus-gvariant: turn on debug output

I thought the test was wrong, but it turns out one of my patches was at
fault. But this helps to diagnose issues.

5 years agobus-message: drop asserts in functions which are wrappers for varargs version
Zbigniew Jędrzejewski-Szmek [Fri, 3 Aug 2018 14:36:51 +0000 (16:36 +0200)]
bus-message: drop asserts in functions which are wrappers for varargs version

The function does no processing on it's own, and just forwards arguments
to the other function. Let's just use the asserts there.

5 years agobus-message: fix calculation of offsets table for arrays
Zbigniew Jędrzejewski-Szmek [Fri, 3 Aug 2018 12:46:57 +0000 (14:46 +0200)]
bus-message: fix calculation of offsets table for arrays

This is similar to the grandparent commit 'fix calculation of offsets table',
except that now the change is for array elements. Same story as before: we need
to make sure that the offsets increase enough taking alignment into account.

While at it, rename 'p' to 'previous' to match similar code in other places.

5 years agobus-message: remove duplicate assignment
Zbigniew Jędrzejewski-Szmek [Thu, 2 Aug 2018 12:25:31 +0000 (14:25 +0200)]
bus-message: remove duplicate assignment

5 years agobus-message: fix calculation of offsets table
Zbigniew Jędrzejewski-Szmek [Thu, 2 Aug 2018 12:25:11 +0000 (14:25 +0200)]
bus-message: fix calculation of offsets table

The offsets specify the ends of variable length data. We would trust the
incoming data, putting the offsets specified in our message
into the offsets tables after doing some superficial verification.
But when actually reading the data we apply alignment, so we would take
the previous offset, align it, making it bigger then current offset, and
then we'd try to read data of negative length.

In the attached example, the message specifies the following offsets:
[1, 4]
but the alignment of those items is
[1, 8]
so we'd calculate the second item as starting at 8 and ending at 4.

5 years agobus: do not print (null) if the message has unknown type
Zbigniew Jędrzejewski-Szmek [Wed, 1 Aug 2018 22:46:20 +0000 (00:46 +0200)]
bus: do not print (null) if the message has unknown type

5 years agobus-message: use define
Zbigniew Jędrzejewski-Szmek [Tue, 24 Jul 2018 19:24:53 +0000 (21:24 +0200)]
bus-message: use define

5 years agobus-message: rename function for clarity
Zbigniew Jędrzejewski-Szmek [Tue, 24 Jul 2018 18:14:39 +0000 (20:14 +0200)]
bus-message: rename function for clarity

There's already message_free_last_container(), so rename to match.

5 years agobus-message: do not crash on message with a string of zero length
Zbigniew Jędrzejewski-Szmek [Mon, 9 Jul 2018 11:21:44 +0000 (13:21 +0200)]
bus-message: do not crash on message with a string of zero length

We'd calculate the "real" length of the string as 'item_size - 1', which does
not work out well when item_size == 0.

5 years agobus-message: let's always use -EBADMSG when the message is bad
Zbigniew Jędrzejewski-Szmek [Mon, 9 Jul 2018 09:12:33 +0000 (11:12 +0200)]
bus-message: let's always use -EBADMSG when the message is bad

-EINVAL means the arguments were somehow wrong, so translate the code we get
internally into -EBADMSG when returning.

5 years agobus-message: avoid an infinite loop on empty structures
Zbigniew Jędrzejewski-Szmek [Mon, 9 Jul 2018 08:52:51 +0000 (10:52 +0200)]
bus-message: avoid an infinite loop on empty structures

The alternative would be to treat gvariant and !gvariant messages differently.
But this is a problem because we check signatures is variuos places before we
have an actual message, for example in sd_bus_add_object_vtable(). It seems
better to treat things consistent (i.e. follow the lowest common denominator)
and disallow empty structures everywhere.

5 years agosd-bus: unify three code-paths which free struct bus_container
Zbigniew Jędrzejewski-Szmek [Mon, 9 Jul 2018 06:06:28 +0000 (08:06 +0200)]
sd-bus: unify three code-paths which free struct bus_container

We didn't free one of the fields in two of the places.

$ valgrind --show-leak-kinds=all --leak-check=full \
  build/fuzz-bus-message \
  test/fuzz/fuzz-bus-message/leak-c09c0e2256d43bc5e2d02748c8d8760e7bc25d20
...
==14457== HEAP SUMMARY:
==14457==     in use at exit: 3 bytes in 1 blocks
==14457==   total heap usage: 509 allocs, 508 frees, 51,016 bytes allocated
==14457==
==14457== 3 bytes in 1 blocks are definitely lost in loss record 1 of 1
==14457==    at 0x4C2EBAB: malloc (vg_replace_malloc.c:299)
==14457==    by 0x53AFE79: strndup (in /usr/lib64/libc-2.27.so)
==14457==    by 0x4F52EB8: free_and_strndup (string-util.c:1039)
==14457==    by 0x4F8E1AB: sd_bus_message_peek_type (bus-message.c:4193)
==14457==    by 0x4F76CB5: bus_message_dump (bus-dump.c:144)
==14457==    by 0x108F12: LLVMFuzzerTestOneInput (fuzz-bus-message.c:24)
==14457==    by 0x1090F7: main (fuzz-main.c:34)
==14457==
==14457== LEAK SUMMARY:
==14457==    definitely lost: 3 bytes in 1 blocks

5 years agobus-message: use structured initialization to avoid use of unitialized memory
Zbigniew Jędrzejewski-Szmek [Mon, 9 Jul 2018 05:38:10 +0000 (07:38 +0200)]
bus-message: use structured initialization to avoid use of unitialized memory

As far as I can see, we would either reuse some values from a previously exited
container or just random bytes from the heap.

Should fix #10127.

5 years agoIntroduce free_and_strndup and use it in bus-message.c
Zbigniew Jędrzejewski-Szmek [Mon, 9 Jul 2018 05:03:01 +0000 (07:03 +0200)]
Introduce free_and_strndup and use it in bus-message.c

v2: fix error in free_and_strndup()

When the orignal and copied message were the same, but shorter than specified
length l, memory read past the end of the buffer would be performed. A test
case is included: a string that had an embedded NUL ("q\0") is used to replace
"q".

v3: Fix one more bug in free_and_strndup and add tests.

v4: Some style fixed based on review, one more use of free_and_replace, and
make the tests more comprehensive.

5 years agofuzz-bus-message: add fuzzer for message parsing
Zbigniew Jędrzejewski-Szmek [Sat, 7 Jul 2018 17:30:25 +0000 (19:30 +0200)]
fuzz-bus-message: add fuzzer for message parsing

As with other fuzzers, SYSTEMD_FUZZ_OUTPUT=1 and SYSTEMD_LOG_LEVEL=debug can be
used for debugging.

5 years agodocs: add a simple, auto-generated index.md
Lennart Poettering [Tue, 2 Oct 2018 07:53:05 +0000 (09:53 +0200)]
docs: add a simple, auto-generated index.md

This is useful for the github pages feature

5 years agoSet theme jekyll-theme-modernist
Lennart Poettering [Tue, 2 Oct 2018 08:07:38 +0000 (10:07 +0200)]
Set theme jekyll-theme-modernist

5 years agoSet theme jekyll-theme-tactile
Lennart Poettering [Tue, 2 Oct 2018 08:06:41 +0000 (10:06 +0200)]
Set theme jekyll-theme-tactile

5 years agoMerge pull request #10245 from keszybz/coc-file-rename
Lennart Poettering [Tue, 2 Oct 2018 07:57:09 +0000 (09:57 +0200)]
Merge pull request #10245 from keszybz/coc-file-rename

code-of-conduct file rename

5 years agotest: fix tests for supplementary groups
Yu Watanabe [Sat, 29 Sep 2018 12:05:52 +0000 (21:05 +0900)]
test: fix tests for supplementary groups

Fixes #9881.