platform/upstream/systemd.git
6 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.

6 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.

6 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

6 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.

6 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

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

6 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.

6 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.

6 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.

6 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.

6 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

6 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.

6 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.

6 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.

6 years agomeson: treat all fuzz cases as unit tests
Zbigniew Jędrzejewski-Szmek [Fri, 10 Aug 2018 15:15:05 +0000 (17:15 +0200)]
meson: treat all fuzz cases as unit tests

318/365 fuzz-bus-message:crash-26bba7182dedc8848939931d9fcefcb7922f2e56:address  OK       0.03 s
319/365 fuzz-bus-message:crash-29ed3c202e0ffade3cad42c8bbeb6cc68a21eb8e:address  OK       0.03 s
320/365 fuzz-bus-message:crash-b88ad9ecf4aacf4a0caca5b5543953265367f084:address  OK       0.03 s
321/365 fuzz-bus-message:crash-c1b37b4729b42c0c05b23cba4eed5d8102498a1e:address  OK       0.03 s
322/365 fuzz-bus-message:crash-d8f3941c74219b4c03532c9b244d5ea539c61af5:address  OK       0.03 s
323/365 fuzz-bus-message:crash-e1b811da5ca494e494b77c6bd8e1c2f2989425c5:address  OK       0.03 s
324/365 fuzz-bus-message:leak-c09c0e2256d43bc5e2d02748c8d8760e7bc25d20:address  OK       0.04 s
325/365 fuzz-bus-message:message1:address       OK       0.03 s
326/365 fuzz-bus-message:timeout-08ee8f6446a4064db064e8e0b3d220147f7d0b5b:address  OK       0.03 s
327/365 fuzz-dhcp-server:discover-existing:address  OK       0.04 s
328/365 fuzz-dhcp-server:discover-new:address   OK       0.03 s
329/365 fuzz-dhcp-server:release:address        OK       0.04 s
330/365 fuzz-dhcp-server:request-existing:address  OK       0.03 s
331/365 fuzz-dhcp-server:request-new:address    OK       0.03 s
332/365 fuzz-dhcp-server:request-reboot:address  OK       0.03 s
333/365 fuzz-dhcp-server:request-renew:address  OK       0.03 s
334/365 fuzz-dns-packet:issue-7888:address      OK       0.03 s
335/365 fuzz-dns-packet:oss-fuzz-5465:address   OK       0.03 s
336/365 fuzz-journal-remote:crash-5a8f03d4c3a46fcded39527084f437e8e4b54b76:address  OK       0.06 s
337/365 fuzz-journal-remote:crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45:address  OK       0.04 s
338/365 fuzz-journal-remote:invalid-ts.txt:address  OK       0.04 s
339/365 fuzz-journal-remote:oss-fuzz-8659:address  OK       0.06 s
340/365 fuzz-journal-remote:oss-fuzz-8686:address  OK       0.04 s
341/365 fuzz-journal-remote:sample.txt:address  OK       0.07 s
342/365 fuzz-unit-file:directives.service:address  OK       0.03 s
343/365 fuzz-unit-file:empty.scope:address      OK       0.04 s
344/365 fuzz-unit-file:machine.slice:address    OK       0.03 s
345/365 fuzz-unit-file:oss-fuzz-6884:address    OK       0.05 s
346/365 fuzz-unit-file:oss-fuzz-6885:address    OK       0.03 s
347/365 fuzz-unit-file:oss-fuzz-6886:address    OK       0.04 s
348/365 fuzz-unit-file:oss-fuzz-6892:address    OK       0.03 s
349/365 fuzz-unit-file:oss-fuzz-6897:address    OK       0.05 s
350/365 fuzz-unit-file:oss-fuzz-6897-evverx:address  OK       0.04 s
351/365 fuzz-unit-file:oss-fuzz-6908:address    OK       0.05 s
352/365 fuzz-unit-file:oss-fuzz-6917:address    OK       0.06 s
353/365 fuzz-unit-file:oss-fuzz-6977:address    OK       0.08 s
354/365 fuzz-unit-file:oss-fuzz-6977-unminimized:address  OK       0.10 s
355/365 fuzz-unit-file:oss-fuzz-7004:address    OK       0.03 s
356/365 fuzz-unit-file:oss-fuzz-8064:address    OK       0.03 s
357/365 fuzz-unit-file:oss-fuzz-8827:address    OK       0.50 s
358/365 fuzz-unit-file:proc-sys-fs-binfmt_misc.automount:address  OK       0.03 s
359/365 fuzz-unit-file:syslog.socket:address    OK       0.03 s
360/365 fuzz-unit-file:systemd-ask-password-console.path:address  OK       0.03 s
361/365 fuzz-unit-file:systemd-machined.service:address  OK       0.03 s
362/365 fuzz-unit-file:systemd-resolved.service:address  OK       0.03 s
363/365 fuzz-unit-file:systemd-tmpfiles-clean.timer:address  OK       0.03 s
364/365 fuzz-unit-file:timers.target:address    OK       0.03 s
365/365 fuzz-unit-file:var-lib-machines.mount:address  OK       0.04 s

This gives us slightly nicer coverage in the normal test run.

When in a git repo, git ls-files is used to get a list of files known to git.
This mirrors what update-man-rules does for man files. Only looking at files
known to git makes it easier to not forget to commit the test file to git,
and also makes bisecting easier if some files are left in repo.

When outside of a git repo, we expect to be unpacked from a tarball, so just
using all files reported by ls is OK.

6 years agomeson: use .source_root() in more places
Zbigniew Jędrzejewski-Szmek [Fri, 10 Aug 2018 14:50:07 +0000 (16:50 +0200)]
meson: use .source_root() in more places

In the main meson.build file, .source_root() and .current_source_dir() are
equivalent, but it seems more appropriate to use .source_root() when we are appending
a path which is by design relative to repo root.

6 years agomeson: add -Dlog-trace to set LOG_TRACE
Zbigniew Jędrzejewski-Szmek [Tue, 7 Aug 2018 15:34:47 +0000 (17:34 +0200)]
meson: add -Dlog-trace to set LOG_TRACE

The justification is the same as for -Dvalgrind: setting config in
meson in this way is easier, because when the value is changed stuff
that should be rebuilt is rebuilt.

6 years agomeson: drop duplicated condition
Zbigniew Jędrzejewski-Szmek [Tue, 7 Aug 2018 16:10:53 +0000 (18:10 +0200)]
meson: drop duplicated condition

The generic check suffices for those four.

6 years agotest-bus-marshal: use cescaping instead of hexmem
Zbigniew Jędrzejewski-Szmek [Sat, 7 Jul 2018 17:08:52 +0000 (19:08 +0200)]
test-bus-marshal: use cescaping instead of hexmem

It is easier to see the contents this way by eye.

6 years agofuzz: unify the "fuzz-regressions" directory with the main corpus
Zbigniew Jędrzejewski-Szmek [Sat, 7 Jul 2018 16:09:21 +0000 (18:09 +0200)]
fuzz: unify the "fuzz-regressions" directory with the main corpus

There isn't really much need to keep them separate. Anything which is a good
corpus entry can be used as a smoke test, and anything which which is a
regression test can just as well be inserted into the corpus.

The only functional difference from this patch (apart from different paths in
output) is that the regression tests are now zipped together with the rest of
the corpus.

$ meson configure build -Dslow-tests=true && ninja -C build test
...
307/325 fuzz-dns-packet:issue-7888:address      OK       0.06 s
308/325 fuzz-dns-packet:oss-fuzz-5465:address   OK       0.04 s
309/325 fuzz-journal-remote:crash-5a8f03d4c3a46fcded39527084f437e8e4b54b76:address  OK       0.07 s
310/325 fuzz-journal-remote:crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45:address  OK       0.05 s
311/325 fuzz-journal-remote:oss-fuzz-8659:address  OK       0.05 s
312/325 fuzz-journal-remote:oss-fuzz-8686:address  OK       0.07 s
313/325 fuzz-unit-file:oss-fuzz-6884:address    OK       0.06 s
314/325 fuzz-unit-file:oss-fuzz-6885:address    OK       0.05 s
315/325 fuzz-unit-file:oss-fuzz-6886:address    OK       0.05 s
316/325 fuzz-unit-file:oss-fuzz-6892:address    OK       0.05 s
317/325 fuzz-unit-file:oss-fuzz-6897:address    OK       0.05 s
318/325 fuzz-unit-file:oss-fuzz-6897-evverx:address  OK       0.06 s
319/325 fuzz-unit-file:oss-fuzz-6908:address    OK       0.07 s
320/325 fuzz-unit-file:oss-fuzz-6917:address    OK       0.07 s
321/325 fuzz-unit-file:oss-fuzz-6977:address    OK       0.13 s
322/325 fuzz-unit-file:oss-fuzz-6977-unminimized:address  OK       0.12 s
323/325 fuzz-unit-file:oss-fuzz-7004:address    OK       0.05 s
324/325 fuzz-unit-file:oss-fuzz-8064:address    OK       0.05 s
325/325 fuzz-unit-file:oss-fuzz-8827:address    OK       0.52 s

6 years agofuzz: rename "fuzz-corpus" directory to just "fuzz"
Zbigniew Jędrzejewski-Szmek [Sat, 7 Jul 2018 15:43:40 +0000 (17:43 +0200)]
fuzz: rename "fuzz-corpus" directory to just "fuzz"

Also, all corpus subdirectories are named exactly the same as the fuzzer they
are for. This makes the paths a bit longer, but easier.

6 years agopo: update Turkish translation
Muhammet Kara [Mon, 1 Oct 2018 17:24:27 +0000 (20:24 +0300)]
po: update Turkish translation

6 years agoMerge pull request #10218 from keszybz/export-sd-device-hwdb
Yu Watanabe [Mon, 1 Oct 2018 17:45:55 +0000 (19:45 +0200)]
Merge pull request #10218 from keszybz/export-sd-device-hwdb

Export functions in sd-device and sd-hwdb

6 years agotest-sd-hwdb: skip tests if hwdb cannot be opened
Zbigniew Jędrzejewski-Szmek [Mon, 1 Oct 2018 13:22:55 +0000 (15:22 +0200)]
test-sd-hwdb: skip tests if hwdb cannot be opened

6 years agoAdd a simple code of conduct based on ruby community guidelines
Zbigniew Jędrzejewski-Szmek [Sun, 30 Sep 2018 17:18:07 +0000 (19:18 +0200)]
Add a simple code of conduct based on ruby community guidelines

This was discussed at the systemd hackfest during ASG2018, and
we agreed to use the Ruby text [1] with the enforcement clause based on
the "contributor covenant". I obviously modified the text where applicable
to refer to systemd.

[1] https://www.ruby-lang.org/en/conduct/

Fixes 10148.

6 years agotest: try system bus if user bus cannot be opened
Yu Watanabe [Sun, 30 Sep 2018 08:30:45 +0000 (17:30 +0900)]
test: try system bus if user bus cannot be opened

6 years agoMerge pull request #10138 from yuwata/test-check-container
Zbigniew Jędrzejewski-Szmek [Mon, 1 Oct 2018 08:09:54 +0000 (10:09 +0200)]
Merge pull request #10138 from yuwata/test-check-container

test: skip several tests when running in container

6 years agoMerge pull request #10220 from floppym/efi-cc
Zbigniew Jędrzejewski-Szmek [Mon, 1 Oct 2018 07:28:22 +0000 (09:28 +0200)]
Merge pull request #10220 from floppym/efi-cc

meson: use an array option for efi-cc

6 years agoimport: sparse_write() returns negative errno
Yu Watanabe [Sat, 29 Sep 2018 17:58:50 +0000 (02:58 +0900)]
import: sparse_write() returns negative errno

6 years agomeson: avoid calling the shell to resolve efi_libdir
Mike Gilbert [Sun, 30 Sep 2018 20:18:43 +0000 (16:18 -0400)]
meson: avoid calling the shell to resolve efi_libdir

6 years agomeson: use an array option for efi-cc
Mike Gilbert [Sun, 30 Sep 2018 19:41:41 +0000 (15:41 -0400)]
meson: use an array option for efi-cc

Fixes: https://github.com/systemd/systemd/issues/10211

6 years agotrivial: fix spelling in code comments
Thomas Haller [Sun, 30 Sep 2018 19:20:08 +0000 (21:20 +0200)]
trivial: fix spelling in code comments

Based-on-patch-by: Rafael Fontenelle <rafaelff@gnome.org>
6 years agolibsystemd: export all functions in sd-hwdb.h
Zbigniew Jędrzejewski-Szmek [Sun, 30 Sep 2018 18:36:51 +0000 (20:36 +0200)]
libsystemd: export all functions in sd-hwdb.h

sd-hwdb.h is now also installed in /usr/include/systemd.

6 years agotest-sd-hwdb: add a simple test for export sd-hwdb functions
Zbigniew Jędrzejewski-Szmek [Sun, 30 Sep 2018 18:34:11 +0000 (20:34 +0200)]
test-sd-hwdb: add a simple test for export sd-hwdb functions

6 years agolibsystemd: export all functions in sd-device.h
Zbigniew Jędrzejewski-Szmek [Sun, 30 Sep 2018 17:59:07 +0000 (19:59 +0200)]
libsystemd: export all functions in sd-device.h

sd-device.h is now also installed in /usr/include/systemd.

6 years agodhcp6: fix memleak about sd_event
Yu Watanabe [Sat, 29 Sep 2018 13:37:21 +0000 (22:37 +0900)]
dhcp6: fix memleak about sd_event

6 years agotest: Add tests for networkd (#10147)
Susant Sahani [Sat, 29 Sep 2018 12:36:25 +0000 (18:06 +0530)]
test: Add tests for networkd (#10147)

6 years agoMerge pull request #10200 from evverx/fuzz-dhcp6-client
Yu Watanabe [Sat, 29 Sep 2018 11:41:52 +0000 (13:41 +0200)]
Merge pull request #10200 from evverx/fuzz-dhcp6-client

Add a fuzzer for dhcp6-client

6 years agotests: add a reproducer for the heap-buffer-overflow fixed in cb1bdeaf56852275e6b
Evgeny Vereshchagin [Sat, 29 Sep 2018 03:25:34 +0000 (03:25 +0000)]
tests: add a reproducer for the heap-buffer-overflow fixed in cb1bdeaf56852275e6b

==14==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020001c761a at pc 0x000000540abc bp 0x7ffd0caf2c50 sp 0x7ffd0caf2c48
READ of size 2 at 0x6020001c761a thread T0
    #0 0x540abb in client_parse_message /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:849:73
    #1 0x53f3bc in client_receive_advertise /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:1083:13
    #2 0x53d57f in client_receive_message /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:1182:21
    #3 0x7f71d8c3eeee in source_dispatch /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3042:21
    #4 0x7f71d8c3e431 in sd_event_dispatch /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3455:21
    #5 0x7f71d8c3fa8d in sd_event_run /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3512:21
    #6 0x531f2b in fuzz_client /work/build/../../src/systemd/src/fuzz/fuzz-dhcp6-client.c:44:9
    #7 0x531bc1 in LLVMFuzzerTestOneInput /work/build/../../src/systemd/src/fuzz/fuzz-dhcp6-client.c:53:9
    #8 0x57bef8 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/libfuzzer/FuzzerLoop.cpp:570:15
    #9 0x579d97 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/libfuzzer/FuzzerLoop.cpp:479:3
    #10 0x57dcc2 in fuzzer::Fuzzer::MutateAndTestOne() /src/libfuzzer/FuzzerLoop.cpp:707:19
    #11 0x580cd6 in fuzzer::Fuzzer::Loop(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, fuzzer::fuzzer_allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /src/libfuzzer/FuzzerLoop.cpp:838:5
    #12 0x55e998 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/libfuzzer/FuzzerDriver.cpp:764:6
    #13 0x551a4c in main /src/libfuzzer/FuzzerMain.cpp:20:10
    #14 0x7f71d784182f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #15 0x41e928 in _start (/out/fuzz-dhcp6-client+0x41e928)

6 years agotests: add a reproducer for the heap-buffer-overflow fixed in b387d3c1327a3ad2
Evgeny Vereshchagin [Sat, 29 Sep 2018 03:09:23 +0000 (03:09 +0000)]
tests: add a reproducer for the heap-buffer-overflow fixed in b387d3c1327a3ad2

6 years agodhcp6: fix an off-by-one error in dhcp6_option_parse_domainname
Evgeny Vereshchagin [Sat, 29 Sep 2018 03:06:10 +0000 (03:06 +0000)]
dhcp6: fix an off-by-one error in dhcp6_option_parse_domainname

==14==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200055fa9c at pc 0x0000005458f1 bp 0x7ffc78940d90 sp 0x7ffc78940d88
READ of size 1 at 0x60200055fa9c thread T0
    #0 0x5458f0 in dhcp6_option_parse_domainname /work/build/../../src/systemd/src/libsystemd-network/dhcp6-option.c:555:29
    #1 0x54706e in dhcp6_lease_set_domains /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-lease.c:242:13
    #2 0x53fce0 in client_parse_message /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:984:29
    #3 0x53f3bc in client_receive_advertise /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:1083:13
    #4 0x53d57f in client_receive_message /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:1182:21
    #5 0x7f0f7159deee in source_dispatch /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3042:21
    #6 0x7f0f7159d431 in sd_event_dispatch /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3455:21
    #7 0x7f0f7159ea8d in sd_event_run /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3512:21
    #8 0x531f2b in fuzz_client /work/build/../../src/systemd/src/fuzz/fuzz-dhcp6-client.c:44:9
    #9 0x531bc1 in LLVMFuzzerTestOneInput /work/build/../../src/systemd/src/fuzz/fuzz-dhcp6-client.c:53:9
    #10 0x57bec8 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/libfuzzer/FuzzerLoop.cpp:570:15
    #11 0x579d67 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/libfuzzer/FuzzerLoop.cpp:479:3
    #12 0x57dc92 in fuzzer::Fuzzer::MutateAndTestOne() /src/libfuzzer/FuzzerLoop.cpp:707:19
    #13 0x580ca6 in fuzzer::Fuzzer::Loop(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, fuzzer::fuzzer_allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /src/libfuzzer/FuzzerLoop.cpp:838:5
    #14 0x55e968 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/libfuzzer/FuzzerDriver.cpp:764:6
    #15 0x551a1c in main /src/libfuzzer/FuzzerMain.cpp:20:10
    #16 0x7f0f701a082f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #17 0x41e928 in _start (/out/fuzz-dhcp6-client+0x41e928)

6 years agotests: make fuzz-dhcp6-client work in containers provided by the OSS-Fuzz project
Evgeny Vereshchagin [Sat, 29 Sep 2018 02:47:18 +0000 (02:47 +0000)]
tests: make fuzz-dhcp6-client work in containers provided by the OSS-Fuzz project

The containers come with an empty machine-id, which causes the fuzzer
to fail as soon as it starts.

See https://github.com/systemd/systemd/pull/9014#discussion_r189594104

6 years agofuzz: add a fuzzer for dhcp6_client
Evgeny Vereshchagin [Wed, 26 Sep 2018 03:10:53 +0000 (03:10 +0000)]
fuzz: add a fuzzer for dhcp6_client

6 years agoman: add systemctl suspend-then-hibernate (#10194)
Jonas DOREL [Fri, 28 Sep 2018 13:56:48 +0000 (15:56 +0200)]
man: add systemctl suspend-then-hibernate (#10194)

This commit tries to document the systemctl suspend-then-hibernate documentation in the systemctl(1) manpage.

Fixes #10192.

6 years agoMerge pull request #10190 from evverx/fuzz-ndisc-rs
Zbigniew Jędrzejewski-Szmek [Fri, 28 Sep 2018 13:54:04 +0000 (15:54 +0200)]
Merge pull request #10190 from evverx/fuzz-ndisc-rs

Add a fuzzer for sd-ndisc and a reproducer for an infinite loop in ndisc_handle_datagram

6 years agomeson: use the host architecture compiler/linker for src/boot/efi
Helmut Grohne [Thu, 27 Sep 2018 15:17:37 +0000 (17:17 +0200)]
meson: use the host architecture compiler/linker for src/boot/efi

cross building systemd to arm64 presently fails, because the build
system uses plain gcc and plain ld (build architecture compiler and
linker respectively) for building src/boot/efi. These values come from
the efi-cc and efi-ld options respectively. It rather should be using
host tools here.

Fixes: b710072da441 ("add support for building efi modules")

6 years agoMerge pull request #10186 from yuwata/fix-10149
Zbigniew Jędrzejewski-Szmek [Fri, 28 Sep 2018 12:20:12 +0000 (14:20 +0200)]
Merge pull request #10186 from yuwata/fix-10149

network: Fix memleaks found by test

6 years agonetworkd-routing-policy-rule.c: drop unnecessary check
Zbigniew Jędrzejewski-Szmek [Thu, 27 Sep 2018 15:50:25 +0000 (17:50 +0200)]
networkd-routing-policy-rule.c: drop unnecessary check

set_get() already does that.

6 years agodhcp6: fix memleak
Yu Watanabe [Thu, 27 Sep 2018 15:10:26 +0000 (00:10 +0900)]
dhcp6: fix memleak

Let's drop client_set_lease() because just writing what it does in both
places is simpler.

Fixes #10157.

6 years agouft8: add comment, requested by @keszybz
Lennart Poettering [Thu, 27 Sep 2018 15:13:53 +0000 (17:13 +0200)]
uft8: add comment, requested by @keszybz

6 years agoupdate TODO
Lennart Poettering [Thu, 27 Sep 2018 15:11:01 +0000 (17:11 +0200)]
update TODO

6 years agodhcp6: fix buffer size checking
Yu Watanabe [Thu, 27 Sep 2018 14:48:51 +0000 (23:48 +0900)]
dhcp6: fix buffer size checking

6 years agodhcp6: use offsetof instead of sizeof
Yu Watanabe [Thu, 27 Sep 2018 14:31:34 +0000 (23:31 +0900)]
dhcp6: use offsetof instead of sizeof

6 years agosd-dhcp-lease: fix memleaks
Yu Watanabe [Thu, 27 Sep 2018 09:04:59 +0000 (18:04 +0900)]
sd-dhcp-lease: fix memleaks

6 years agosd-dhecp-lease: use free_and_replace() at one more
Yu Watanabe [Thu, 27 Sep 2018 09:04:08 +0000 (18:04 +0900)]
sd-dhecp-lease: use free_and_replace() at one more

6 years agonetwork: fix memleak around Network.dhcp_vendor_class_identifier
Yu Watanabe [Thu, 27 Sep 2018 08:48:11 +0000 (17:48 +0900)]
network: fix memleak around Network.dhcp_vendor_class_identifier

6 years agonetwork: fix alignment
Yu Watanabe [Thu, 27 Sep 2018 08:39:16 +0000 (17:39 +0900)]
network: fix alignment

6 years agonetwork: strdup iif and oif when creating RoutingPolicyRule object
Yu Watanabe [Thu, 27 Sep 2018 08:27:04 +0000 (17:27 +0900)]
network: strdup iif and oif when creating RoutingPolicyRule object

6 years agonetwork: use TAKE_PTR() at one more place
Yu Watanabe [Thu, 27 Sep 2018 08:26:04 +0000 (17:26 +0900)]
network: use TAKE_PTR() at one more place

6 years agonetwork: fix memleak about routing policy
Yu Watanabe [Wed, 26 Sep 2018 16:59:19 +0000 (01:59 +0900)]
network: fix memleak about routing policy

6 years agonetwork: use structured initializer at one more place
Yu Watanabe [Wed, 26 Sep 2018 16:52:04 +0000 (01:52 +0900)]
network: use structured initializer at one more place

6 years agoMerge pull request #10173 from poettering/sd-boot-utf
Zbigniew Jędrzejewski-Szmek [Thu, 27 Sep 2018 06:21:20 +0000 (08:21 +0200)]
Merge pull request #10173 from poettering/sd-boot-utf

the utf8.c changes from PR #9437 (i.e. the boot counting PR)

6 years agonspawn: when --quiet is passed, simply downgrade log messages to LOG_DEBUG (#10181)
Lennart Poettering [Wed, 26 Sep 2018 21:40:39 +0000 (23:40 +0200)]
nspawn: when --quiet is passed, simply downgrade log messages to LOG_DEBUG (#10181)

With this change almost all log messages that are suppressed through
--quiet are not actually suppressed anymore, but simply downgraded to
LOG_DEBUG. Previously we did it this way for some log messages and fully
suppressed them for others. With this it's pretty much systematic.

Inspired by #10122.

6 years agoudev/net: add support for the equivalent of "ethtool advertise" to .link files
Susant Sahani [Sat, 16 Sep 2017 18:36:56 +0000 (00:06 +0530)]
udev/net: add support for the equivalent of "ethtool advertise" to .link files

This work adds support for the equivalent of "ethtool advertise" to .link files?
http://lists.freedesktop.org/archives/systemd-devel/2015-April/030112.html

6 years agotests: add a reproducer for another infinite loop in ndisc_handle_datagram
Evgeny Vereshchagin [Wed, 26 Sep 2018 18:09:09 +0000 (18:09 +0000)]
tests: add a reproducer for another infinite loop in ndisc_handle_datagram

6 years agotests: add a reproducer for an infinite loop in ndisc_handle_datagram
Evgeny Vereshchagin [Wed, 26 Sep 2018 15:10:21 +0000 (15:10 +0000)]
tests: add a reproducer for an infinite loop in ndisc_handle_datagram

=0  ndisc_router_parse (rt=0x60d000000110) at ../src/libsystemd-network/ndisc-router.c:126
=1  0x000055555558dc67 in ndisc_handle_datagram (nd=0x608000000020, rt=0x60d000000110) at ../src/libsystemd-network/sd-ndisc.c:170
=2  0x000055555558e65d in ndisc_recv (s=0x611000000040, fd=4, revents=1, userdata=0x608000000020) at ../src/libsystemd-network/sd-ndisc.c:233
=3  0x00007ffff63913a8 in source_dispatch (s=0x611000000040) at ../src/libsystemd/sd-event/sd-event.c:3042
=4  0x00007ffff6395eab in sd_event_dispatch (e=0x617000000080) at ../src/libsystemd/sd-event/sd-event.c:3455
=5  0x00007ffff6396b12 in sd_event_run (e=0x617000000080, timeout=18446744073709551615) at ../src/libsystemd/sd-event/sd-event.c:3512
=6  0x0000555555583f5c in LLVMFuzzerTestOneInput (data=0x6060000000e0 "\206", size=53) at ../src/fuzz/fuzz-ndisc-rs.c:422
=7  0x0000555555586356 in main (argc=2, argv=0x7fffffffe3d8) at ../src/fuzz/fuzz-main.c:33

6 years agondisc: fix two infinite loops
Yu Watanabe [Fri, 28 Sep 2018 10:28:05 +0000 (19:28 +0900)]
ndisc: fix two infinite loops

6 years agotests: add a fuzzer for sd-ndisc
Evgeny Vereshchagin [Wed, 26 Sep 2018 15:04:26 +0000 (15:04 +0000)]
tests: add a fuzzer for sd-ndisc

6 years agoemergency: make sure console password agents don't interfere with the emergency shell
Franck Bui [Tue, 25 Sep 2018 13:25:08 +0000 (15:25 +0200)]
emergency: make sure console password agents don't interfere with the emergency shell

If for any reason local-fs.target fails at startup while a password is
requested by systemd-cryptsetup@.service, we end up with the emergency shell
competing with systemd-ask-password-console.service for the console.

This patch makes sure that:

 - systemd-ask-password-console.service is stopped before entering in emergency
   mode so it won't make any access to the console while the emergency shell is
   running.

 - systemd-ask-password-console.path is also stopped so any attempts to restart
   systemd-cryptsetup in the emergency shell won't restart
   systemd-ask-password-console.service and kill the emergency shell.

 - systemd-ask-password-wall.path is stopped so
   systemd-ask-password-wall.service won't be started as this service pulls
   the default dependencies in.

Fixes: #10131

6 years agonspawn: chown() the legacy hierarchy when it's used in a container
Evgeny Vereshchagin [Mon, 17 Sep 2018 07:12:38 +0000 (07:12 +0000)]
nspawn: chown() the legacy hierarchy when it's used in a container

This is a follow-up to 720f0a2f3c928cc9379501a52146be9fbb4d9be2.

Closes https://github.com/systemd/systemd/issues/10026
Closes https://github.com/systemd/systemd/issues/9563

6 years agoMake Watchdog Signal Configurable
Anita Zhang [Wed, 19 Sep 2018 19:03:01 +0000 (12:03 -0700)]
Make Watchdog Signal Configurable

Allows configuring the watchdog signal (with a default of SIGABRT).
This allows an alternative to SIGABRT when coredumps are not desirable.

Appropriate references to SIGABRT or aborting were renamed to reflect
more liberal watchdog signals.

Closes #8658

6 years agoMerge pull request #10158 from keszybz/seccomp-log-tightening
Lennart Poettering [Wed, 26 Sep 2018 13:56:32 +0000 (15:56 +0200)]
Merge pull request #10158 from keszybz/seccomp-log-tightening

Seccomp log tightening

6 years agoMerge pull request #10168 from keszybz/coverity-fixes
Lennart Poettering [Wed, 26 Sep 2018 13:37:22 +0000 (15:37 +0200)]
Merge pull request #10168 from keszybz/coverity-fixes

Coverity fixes

6 years agonetworkd-dhcp6: Set initial value of route to NULL
Patrik Flykt [Wed, 26 Sep 2018 00:09:17 +0000 (18:09 -0600)]
networkd-dhcp6: Set initial value of route to NULL

Start with route set to NULL should there be no route created. Remove
the explicit route_free as the _cleanup_ will take care of that after
the continue;.

6 years agolibsystemd: add missing 'global' specifier in libsystemd.sym
Yu Watanabe [Tue, 25 Sep 2018 11:58:24 +0000 (20:58 +0900)]
libsystemd: add missing 'global' specifier in libsystemd.sym

6 years agoRFC tmpfiles: Allow configuration to ignore execution errors
William Douglas [Mon, 10 Sep 2018 19:07:29 +0000 (12:07 -0700)]
RFC tmpfiles: Allow configuration to ignore execution errors

This is an implementation that covers making errors encountered when writing
file content optionally fatal. If this is something that folks would want I'll
add handling of this for all the other directives. I'd appreciate suggestions
on how this might better be structured as well (use of a goto fail or such) as
I'm not super happy with the approach.

6 years agoMerge pull request #10169 from poettering/putenv-error-handling
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 17:50:49 +0000 (19:50 +0200)]
Merge pull request #10169 from poettering/putenv-error-handling

add missing putenv() error handling

6 years agoutf8: add utf8_to_utf16() helper
Lennart Poettering [Mon, 25 Jun 2018 17:17:42 +0000 (19:17 +0200)]
utf8: add utf8_to_utf16() helper

6 years agoutf8: let's update utf16_to_utf8() a bit
Lennart Poettering [Mon, 25 Jun 2018 17:16:43 +0000 (19:16 +0200)]
utf8: let's update utf16_to_utf8() a bit

Let's change utf16_to_utf8() prototype to refer to utf16 chars with char16_t rather than void

Let's not cast away a "const" needlessly.

Let's add a few comments.

Let's fix the calculations of the buffer size to allocate, and how long
to run the loop in case of uneven byte numbers

6 years agoutf8: change return type of utf8_encoded_expected_len() to size_t
Lennart Poettering [Wed, 18 Jul 2018 10:30:00 +0000 (12:30 +0200)]
utf8: change return type of utf8_encoded_expected_len() to size_t

After all it returns a lengths of a string in chars, and hence should
return size_t, exactly like strlen().

6 years agoutf8: modernize utf16 inline calls a bit
Lennart Poettering [Wed, 18 Jul 2018 10:23:31 +0000 (12:23 +0200)]
utf8: modernize utf16 inline calls a bit

Let's fix an indentation issue.

Let's avoid yoda comparisons.

Let's drop unnecessary ().

Let's make sure we convert 16bit values to 32bit before shifting them by
10bit to the left, to avoid overflows.

Let's avoid comparisons between signed literals and unsigned variables,
in particular if the literals are outside of the minimum range C
requires for "int".

6 years agoutf8: update utf8_is_valid() a bit
Lennart Poettering [Wed, 18 Jul 2018 10:21:39 +0000 (12:21 +0200)]
utf8: update utf8_is_valid() a bit

Let's avoid a few casts in the function. Also, let's drop the "const"
when returning the string, for similar reasons as strchr() and friends
drop it: so that we don't add a const if the user passes in a non-const
string.

6 years agoMerge pull request #10088 from keszybz/man-systemctl-return
Lennart Poettering [Tue, 25 Sep 2018 10:35:36 +0000 (12:35 +0200)]
Merge pull request #10088 from keszybz/man-systemctl-return

man: add a description of systemctl return codes

6 years agoMerge pull request #10059 from yuwata/env-exec-directory
Lennart Poettering [Tue, 25 Sep 2018 10:34:30 +0000 (12:34 +0200)]
Merge pull request #10059 from yuwata/env-exec-directory

core: introduce $RUNTIME_DIRECTORY= or friends

6 years agoexec-util: add missing logging call
Lennart Poettering [Tue, 25 Sep 2018 10:03:06 +0000 (12:03 +0200)]
exec-util: add missing logging call

This function logs about all errors, but one case was forgotten. Fix
that.

6 years agoexec-util: handle putenv() errors
Lennart Poettering [Tue, 25 Sep 2018 10:02:26 +0000 (12:02 +0200)]
exec-util: handle putenv() errors

Just paranoia, as putenv() can fail and we should catch it, like we
catch all other errors.

Follow-up for #10073

6 years agotest-journal-syslog: initialize variable
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 09:34:52 +0000 (11:34 +0200)]
test-journal-syslog: initialize variable

The *priority argument to syslog_parse_priority() needs to be initialized
if the last argument (with_facility) is false.

CID #1394690.

6 years agoudev-builtin-net_id: do not assume "type" attribute exists
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 09:29:54 +0000 (11:29 +0200)]
udev-builtin-net_id: do not assume "type" attribute exists

It *should*, but who knows, let's be more defensive here.

CID #1395805.

6 years agojournal-upload: fix off-by-one in assert()
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 09:22:13 +0000 (11:22 +0200)]
journal-upload: fix off-by-one in assert()

CID #1394386.

6 years agosd-event: use new cleanup function more
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 09:15:27 +0000 (11:15 +0200)]
sd-event: use new cleanup function more

6 years agosd-event: remove dead code and use _cleanup_
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 09:10:12 +0000 (11:10 +0200)]
sd-event: remove dead code and use _cleanup_

CID #1393250.

6 years agodocs: clarify controller mount logic in hybrid cgroups mode
Lennart Poettering [Mon, 24 Sep 2018 17:01:37 +0000 (19:01 +0200)]
docs: clarify controller mount logic in hybrid cgroups mode

Fixes: #10107

6 years agoMake bzip2 an optional dependency for systemd-importd
Thiago Macieira [Mon, 24 Sep 2018 20:03:02 +0000 (13:03 -0700)]
Make bzip2 an optional dependency for systemd-importd

Yes, there are still a lot of users of bzip2, but it's fallen out of
favour after LZMA/xz, which can compress a lot more and often
decompresses faster than bzip2 too.

6 years agoMerge pull request #10163 from poettering/inhibit-format-table
Lennart Poettering [Tue, 25 Sep 2018 08:24:30 +0000 (10:24 +0200)]
Merge pull request #10163 from poettering/inhibit-format-table

systemd-inhibit --list: port to format-table.c

6 years agoMerge pull request #10073 from xnox/execve
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 08:07:23 +0000 (10:07 +0200)]
Merge pull request #10073 from xnox/execve

Execute generators with manager's environment exported

6 years agoDHCPv6: use unsigned for flags
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 07:29:36 +0000 (09:29 +0200)]
DHCPv6: use unsigned for flags

6 years agoMerge pull request #10164 from poettering/btrfs-resize-fix
Zbigniew Jędrzejewski-Szmek [Tue, 25 Sep 2018 07:24:14 +0000 (09:24 +0200)]
Merge pull request #10164 from poettering/btrfs-resize-fix

btrfs resize fix

6 years agoudev: fix some type sloppiness
Lennart Poettering [Mon, 24 Sep 2018 16:59:54 +0000 (18:59 +0200)]
udev: fix some type sloppiness

We use strtoul() which returns an "unsigned long", but then assign this
to int or unsigned in, i.e. drop 32bit silently on 64bit systems. Let's
clean this up a bit, and retain the right types.

6 years agologind: fix blacklist/whitelist confusion in comment (#10165)
Lennart Poettering [Mon, 24 Sep 2018 22:02:41 +0000 (01:02 +0300)]
logind: fix blacklist/whitelist confusion in comment (#10165)

Triggered by this:

https://github.com/systemd/systemd/commit/602a41c22ac2df33b4b5e5083719c1cfaf58acf9#r30575293

6 years agodocs: fix CONTRIBUTING path (#10160)
Lennart Poettering [Mon, 24 Sep 2018 21:25:48 +0000 (00:25 +0300)]
docs: fix CONTRIBUTING path (#10160)