platform/upstream/systemd.git
8 years agoresolved: rework IDNA logic
Lennart Poettering [Mon, 18 Jan 2016 19:31:39 +0000 (20:31 +0100)]
resolved: rework IDNA logic

Move IDNA logic out of the normal domain name processing, and into the bus frontend calls. Previously whenever
comparing two domain names we'd implicitly do IDNA conversion so that "pöttering.de" and "xn--pttering-n4a.de" would be
considered equal. This is problematic not only for DNSSEC, but actually also against he IDNA specs.

Moreover it creates problems when encoding DNS-SD services in classic DNS. There, the specification suggests using
UTF8 encoding for the actual service name, but apply IDNA encoding to the domain suffix.

With this change IDNA conversion is done only:

- When the user passes a non-ASCII hostname when resolving a host name using ResolveHostname()
- When the user passes a non-ASCII domain suffix when resolving a service using ResolveService()

No IDNA encoding is done anymore:

- When the user does raw ResolveRecord() RR resolving
- On the service part of a DNS-SD service name

Previously, IDNA encoding was done when serializing names into packets, at a point where information whether something
is a label that needs IDNA encoding or not was not available, but at a point whether it was known whether to generate a
classic DNS packet (where IDNA applies), or an mDNS/LLMNR packet (where IDNA does not apply, and UTF8 is used instead
for all host names). With this change each DnsQuery object will now maintain two copies of the DnsQuestion to ask: one
encoded in IDNA for use with classic DNS, and one encoded in UTF8 for use with LLMNR and MulticastDNS.

8 years agoresolved: minor optimization for dns_question_is_equal()
Lennart Poettering [Mon, 18 Jan 2016 19:22:45 +0000 (20:22 +0100)]
resolved: minor optimization for dns_question_is_equal()

If the poinetrs are equal, we don't have to do a deep comparison.

This is similar to a similar optimization we already have in place for RRs and keys.

8 years agoresolved: be slightly stricter when validating DnsQuestion
Lennart Poettering [Mon, 18 Jan 2016 19:21:55 +0000 (20:21 +0100)]
resolved: be slightly stricter when validating DnsQuestion

Also verify whether the DNS RR types are actually suitable for a question.

8 years agoresolved: make key argument of dns_question_contains() const
Lennart Poettering [Mon, 18 Jan 2016 19:21:30 +0000 (20:21 +0100)]
resolved: make key argument of dns_question_contains() const

8 years agoresolved add dns_name_apply_idna() to convert a domain name into its IDNA equivalent
Lennart Poettering [Mon, 18 Jan 2016 19:18:28 +0000 (20:18 +0100)]
resolved add dns_name_apply_idna() to convert a domain name into its IDNA equivalent

8 years agoMerge pull request #2326 from poettering/dnssec15
Tom Gundersen [Mon, 18 Jan 2016 22:10:53 +0000 (23:10 +0100)]
Merge pull request #2326 from poettering/dnssec15

Fifteenth batch of DNSSEC patches

8 years agoMerge pull request #2352 from martinpitt/master
Daniel Mack [Mon, 18 Jan 2016 10:49:32 +0000 (11:49 +0100)]
Merge pull request #2352 from martinpitt/master

keymap: Add HP ProBook 440 G3

8 years agokeymap: Add HP ProBook 440 G3
Martin Pitt [Mon, 18 Jan 2016 10:01:32 +0000 (11:01 +0100)]
keymap: Add HP ProBook 440 G3

Fixes #2343

8 years agoMerge pull request #2347 from aroig/gh/fix-udev-user-wants
Daniel Mack [Mon, 18 Jan 2016 09:53:49 +0000 (10:53 +0100)]
Merge pull request #2347 from aroig/gh/fix-udev-user-wants

Fix broken SYSTEMD_USER_WANTS in udev rules.

8 years agoMerge pull request #2350 from evverx/fix-memory-leak-on-failed-preset-all
Daniel Mack [Mon, 18 Jan 2016 09:52:15 +0000 (10:52 +0100)]
Merge pull request #2350 from evverx/fix-memory-leak-on-failed-preset-all

core: fix memory leak on failed preset-all

8 years agoMerge pull request #2349 from evverx/test-functions-cleanup
Daniel Mack [Mon, 18 Jan 2016 09:51:19 +0000 (10:51 +0100)]
Merge pull request #2349 from evverx/test-functions-cleanup

tests: various fixes

8 years agotests: add STRIP_BINARIES
Evgeny Vereshchagin [Mon, 18 Jan 2016 06:45:20 +0000 (06:45 +0000)]
tests: add STRIP_BINARIES

We need a beautiful stacktraces sometimes
For example https://github.com/systemd/systemd/pull/2328

8 years agocore: fix memory leak on failed preset-all
Evgeny Vereshchagin [Mon, 18 Jan 2016 06:10:33 +0000 (06:10 +0000)]
core: fix memory leak on failed preset-all

How to reproduce
$ systemctl set-default multi-user # https://github.com/systemd/systemd/issues/2298
$ systemctl preset-all
Failed to execute operation: Too many levels of symbolic links

$ systemctl poweroff

Fixes:
==1==
==1== HEAP SUMMARY:
==1==     in use at exit: 65,645 bytes in 7 blocks
==1==   total heap usage: 40,539 allocs, 40,532 frees, 30,147,547 bytes allocated
==1==
==1== 109 (24 direct, 85 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 7
==1==    at 0x4C2BBCF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1==    by 0x4C2DE2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1==    by 0x23DA71: unit_file_changes_add (install.c:233)
==1==    by 0x23E45D: remove_marked_symlinks_fd (install.c:453)
==1==    by 0x23E267: remove_marked_symlinks_fd (install.c:405)
==1==    by 0x23E641: remove_marked_symlinks (install.c:494)
==1==    by 0x243A91: execute_preset (install.c:2190)
==1==    by 0x244343: unit_file_preset_all (install.c:2351)
==1==    by 0x18AAA2: method_preset_all_unit_files (dbus-manager.c:1846)
==1==    by 0x1D8157: method_callbacks_run (bus-objects.c:420)
==1==    by 0x1DA9E9: object_find_and_run (bus-objects.c:1257)
==1==    by 0x1DB02B: bus_process_object (bus-objects.c:1373)
==1==
==1== LEAK SUMMARY:
==1==    definitely lost: 24 bytes in 1 blocks
==1==    indirectly lost: 85 bytes in 1 blocks
==1==      possibly lost: 0 bytes in 0 blocks
==1==    still reachable: 65,536 bytes in 5 blocks
==1==         suppressed: 0 bytes in 0 blocks
==1== Reachable blocks (those to which a pointer was found) are not shown.
==1== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==1==
==1== For counts of detected and suppressed errors, rerun with: -v
==1== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

8 years agotests: fix TEST-03-JOBS
Evgeny Vereshchagin [Sun, 17 Jan 2016 03:21:52 +0000 (03:21 +0000)]
tests: fix TEST-03-JOBS

We have

JOB UNIT                     TYPE  STATE
  1 testsuite.target         start waiting
 81 end.service              start waiting
187 sleep.service            start waiting
136 hello.service            start waiting
 82 testsuite.service        start running
135 hello-after-sleep.target start waiting

sometimes

8 years agotests: remove unnecessary setup_nspawn_root
Evgeny Vereshchagin [Sun, 17 Jan 2016 03:33:20 +0000 (03:33 +0000)]
tests: remove unnecessary setup_nspawn_root

we don't run nspawn in TEST-02-CRYPTSETUP

8 years agotests: fix TEST-02-CRYPTSETUP on Debian/Ubuntu
Evgeny Vereshchagin [Sun, 17 Jan 2016 03:32:37 +0000 (03:32 +0000)]
tests: fix TEST-02-CRYPTSETUP on Debian/Ubuntu

8 years agotests: install fsck*
Evgeny Vereshchagin [Sat, 16 Jan 2016 08:06:59 +0000 (08:06 +0000)]
tests: install fsck*

systemd-fsck depends on /sbin/fsck*

8 years agotests: remove unnecessary --boot
Evgeny Vereshchagin [Fri, 15 Jan 2016 23:58:45 +0000 (23:58 +0000)]
tests: remove unnecessary --boot

* Use $ROOTLIBDIR/systemd always
* Don't pass $ROOTLIBDIR/systemd as the first argument:

$ cat /proc/1/cmdline
/lib/systemd/systemd/lib/systemd/systemd...

8 years agoresolved: fix logging about DNAME redirection
Lennart Poettering [Sun, 17 Jan 2016 20:53:16 +0000 (21:53 +0100)]
resolved: fix logging about DNAME redirection

8 years agoresolved: when we find a DNAME RR, don't insist in a signed CNAME RR
Lennart Poettering [Sun, 17 Jan 2016 20:50:10 +0000 (21:50 +0100)]
resolved: when we find a DNAME RR, don't insist in a signed CNAME RR

If we have a signed DNAME RR response, there's no need to insist on a signature for a CNAME RR response, after all it
is unlikely to be signed, given the implicit synthethis of CNAME through DNAME RRs.

8 years agoFix broken SYSTEMD_USER_WANTS in udev rules.
Abdo Roig-Maranges [Sun, 17 Jan 2016 20:28:06 +0000 (21:28 +0100)]
Fix broken SYSTEMD_USER_WANTS in udev rules.

The functionality of SYSTEMD_USER_WANTS that attaches dependencies to device
units from udev rules was broken since commit b2c23da8. I guess it was due to
a mass replace s/SYSTEMD_USER/MANAGER_USER/.

8 years agounits: don't fail if /root doesn't exist for shell units
Lennart Poettering [Sun, 17 Jan 2016 16:25:42 +0000 (17:25 +0100)]
units: don't fail if /root doesn't exist for shell units

As discussed on the ML:

http://lists.freedesktop.org/archives/systemd-devel/2016-January/035594.html

8 years agoresolved: update DNSSEC TODO
Lennart Poettering [Fri, 15 Jan 2016 20:40:20 +0000 (21:40 +0100)]
resolved: update DNSSEC TODO

8 years agoresolved: try to reduce number or DnsResourceKeys we keep around by merging them
Lennart Poettering [Fri, 15 Jan 2016 20:38:27 +0000 (21:38 +0100)]
resolved: try to reduce number or DnsResourceKeys we keep around by merging them

Quite often we read the same RR key multiple times from the same message. Try to replace them by a single object when
we notice this. Do so again when we add things to the cache.

This should reduce memory consumption a tiny bit.

8 years agoresolved: when switching between DNSSEC modes, possibly flush caches
Lennart Poettering [Fri, 15 Jan 2016 20:07:21 +0000 (21:07 +0100)]
resolved: when switching between DNSSEC modes, possibly flush caches

If the networkd configuration changes during runtime, make sure to flush all caches when we switch from a less trusted
to a more trusted mode.

8 years agoresolved: when the server feature level changes between query and response restart...
Lennart Poettering [Fri, 15 Jan 2016 19:45:17 +0000 (20:45 +0100)]
resolved: when the server feature level changes between query and response restart transaction

In some cases we learn something about a server's feature level through its responses. If we notice that after doing
basic checking of a response, and after collecting all auxiliary DNSSEC info the feature level of the server is lower
than where we started, restart the whole transaction.

This is useful to deal with servers that response rubbish when talked to with too high feature levels.

8 years agoresolved: check OPT RR before accepting a reply for verification of server feature...
Lennart Poettering [Fri, 15 Jan 2016 19:36:40 +0000 (20:36 +0100)]
resolved: check OPT RR before accepting a reply for verification of server feature level

Let's make sure we first check if the OPT was lost in the reply, before we accept a reply as successful and use it for
verifying the current feature level.

8 years agoresolved: when restarting a DNS transaction, remove all auxiliary DNSSEC transactions
Lennart Poettering [Fri, 15 Jan 2016 19:34:09 +0000 (20:34 +0100)]
resolved: when restarting a DNS transaction, remove all auxiliary DNSSEC transactions

When we restart a DNS transaction, remove all connections to any auxiliary DNSSEC transactions, after all we might
acquire completely different data this time, requiring different auxiliary DNSSEC transactions.

8 years agoresolved: when we receive an reply which is OPT-less or RRSIG-less, downgrade what...
Lennart Poettering [Fri, 15 Jan 2016 19:29:56 +0000 (20:29 +0100)]
resolved: when we receive an reply which is OPT-less or RRSIG-less, downgrade what we verified

If we receive a reply that lacks the OPT RR, then this is reason to downgrade what was verified before, as it's
apparently no longer true, and the previous OPT RR we saw was only superficially OK.

Similar, if we realize that RRSIGs are not augmented, then also downgrade the feature level that was verified, as
DNSSEC is after all not supported. This check is in particular necessary, as we might notice the fact that RRSIG is not
augmented only very late, when verifying the root domain.

Also, when verifying a successful response, actually take in consideration that it might have been reported already
that RRSIG or OPT are missing in the response.

8 years agoresolved: downgrade server feature level more aggressively when we have reason to
Lennart Poettering [Fri, 15 Jan 2016 18:23:51 +0000 (19:23 +0100)]
resolved: downgrade server feature level more aggressively when we have reason to

This adds logic to downgrade the feature level more aggressively when we have reason to. Specifically:

- When we get a response packet that lacks an OPT RR for a query that had it. If so, downgrade immediately to UDP mode,
  i.e. don't generate EDNS0 packets anymore.

- When we get a response which we are sure should be signed, but lacks RRSIG RRs, we downgrade to EDNS0 mode, i.e.
  below DO mode, since DO is apparently not really supported.

This should increase compatibility with servers that generate non-sensical responses if they messages with OPT RRs and
suchlike, for example the situation described here:

https://open.nlnetlabs.nl/pipermail/dnssec-trigger/2014-November/000376.html

This also changes the downgrade code to explain in a debug log message why a specific downgrade happened.

8 years agoresolved: ignore invalid OPT RRs in incoming packets
Lennart Poettering [Fri, 15 Jan 2016 17:18:54 +0000 (18:18 +0100)]
resolved: ignore invalid OPT RRs in incoming packets

This validates OPT RRs more rigorously, before honouring them: if we any of the following condition holds, we'll ignore
them:

a) Multiple OPT RRs in the same message
b) OPT RR not owned by the root domain
c) OPT RR in the wrong section (Belkin routers do this)
d) OPT RR contain rfc6975 algorithm data (Belkin routers do this)
e) OPT version is not 0
f) OPT payload doesn't add up with the lengths

Note that d) may be an indication that the server just blindly copied OPT data from the response into the reply.
RFC6975 data is only supposed to be included in queries, and we do so. It's not supposed to be included in responses
(and the RFC is very clear on that). Hence if we get it back in a reply, then the server probably just copied the OPT
RR.

8 years agoresolved: update RFCs list and TODO list
Lennart Poettering [Fri, 15 Jan 2016 01:48:56 +0000 (02:48 +0100)]
resolved: update RFCs list and TODO list

8 years agoresolved: add complex test case
Lennart Poettering [Fri, 15 Jan 2016 01:24:39 +0000 (02:24 +0100)]
resolved: add complex test case

This new test case tries to resolve a couple of known domains, to verify the validation results. It talks to resolved
via the bus, thus comprehensively testing the whole shebang.

Of course, it requires network connectivity and a DNSSEC capable DNS server, hence this is a manual test.

8 years agoresolved: complete NSEC non-existance proofs
Lennart Poettering [Fri, 15 Jan 2016 01:21:22 +0000 (02:21 +0100)]
resolved: complete NSEC non-existance proofs

This fills in the last few gaps:

- When checking if a domain is non-existing, also check that no wildcard for it exists
- Ensure we don't base "covering" tests on NSEC RRs from a parent zone
- Refuse to accept expanded wildcard NSEC RRs for absence proofs.

8 years agoresolved: make sure the NSEC proof-of-non-existance check also looks for wildcard...
Lennart Poettering [Thu, 14 Jan 2016 20:05:57 +0000 (21:05 +0100)]
resolved: make sure the NSEC proof-of-non-existance check also looks for wildcard domains

8 years agoresolved: on negative NODATA replies, properly deal with empty non-terminals
Lennart Poettering [Thu, 14 Jan 2016 19:12:29 +0000 (20:12 +0100)]
resolved: on negative NODATA replies, properly deal with empty non-terminals

empty non-terminals generally lack NSEC RRs, which means we can deduce their existance only from the fact that there
are other RRs that contain them in their suffix. Specifically, the NSEC proof for NODATA on ENTs works by sending the
NSEC whose next name is a suffix of the queried name to the client. Use this information properly.

8 years agoresolved: rename dnssec_verify_dnskey() → dnssec_verify_dnskey_by_ds()
Lennart Poettering [Thu, 14 Jan 2016 19:11:11 +0000 (20:11 +0100)]
resolved: rename dnssec_verify_dnskey() → dnssec_verify_dnskey_by_ds()

This should clarify that this is not regular signature-based validation, but validation through DS RR fingerprints.

8 years agoresolved: be stricter when using NSEC3
Lennart Poettering [Thu, 14 Jan 2016 17:14:43 +0000 (18:14 +0100)]
resolved: be stricter when using NSEC3

We can user signer and synthesizing source information to check that the NSEC3 RRs we want to use are
actually reasonable and properly signed.

8 years agoresolved: when validating an RRset, store information about the synthesizing source...
Lennart Poettering [Thu, 14 Jan 2016 17:03:03 +0000 (18:03 +0100)]
resolved: when validating an RRset, store information about the synthesizing source and zone in each RR

Having this information available is useful when we need to check whether various RRs are suitable for proofs. This
information is stored in the RRs as number of labels to skip from the beginning of the owner name to reach the
synthesizing source/signer. Simple accessor calls are then added to retrieve the signer/source from the RR using this
information.

This also moves validation of a a number of RRSIG parameters into a new call dnssec_rrsig_prepare() that as side-effect
initializes the two numeric values.

8 years agoresolved: do not use NSEC RRs from the wrong zone for proofs
Lennart Poettering [Thu, 14 Jan 2016 16:28:58 +0000 (17:28 +0100)]
resolved: do not use NSEC RRs from the wrong zone for proofs

When proving NODATA DS lookups we need to insist on looking at the parent zone's NSEC RR, not the child zone's.

When proving any other NODATA lookups we need to insist on looking at the child zone's NSEC RR, not the parent's.

8 years agoresolved: ignore DS RRs without generating an error if they use an unsupported digest...
Lennart Poettering [Thu, 14 Jan 2016 16:27:28 +0000 (17:27 +0100)]
resolved: ignore DS RRs without generating an error if they use an unsupported digest algorithm

8 years agoresolved: some RR types may appear only or not at all in a zone apex
Lennart Poettering [Thu, 14 Jan 2016 16:25:06 +0000 (17:25 +0100)]
resolved: some RR types may appear only or not at all in a zone apex

Add extra checks when validating with RRSIGs. This follows recommendations from:

http://www.george-barwood.pwp.blueyonder.co.uk/DnsServer/NotesOnDNSSSEC.htm

8 years agoUpdate TODO
Lennart Poettering [Thu, 14 Jan 2016 17:08:29 +0000 (18:08 +0100)]
Update TODO

8 years agoMerge pull request #2340 from evverx/fix-memory-leak-on-enable-disable-etc
Daniel Mack [Sun, 17 Jan 2016 12:47:18 +0000 (13:47 +0100)]
Merge pull request #2340 from evverx/fix-memory-leak-on-enable-disable-etc

core: fix memory leak on set-default, enable, disable etc

8 years agocore: fix memory leak on set-default, enable, disable etc
Evgeny Vereshchagin [Sun, 17 Jan 2016 09:36:03 +0000 (09:36 +0000)]
core: fix memory leak on set-default, enable, disable etc

Fixes:
==1==    by 0x23E44C: remove_marked_symlinks_fd (install.c:453)
==1==    by 0x23E256: remove_marked_symlinks_fd (install.c:405)
==1==    by 0x23E630: remove_marked_symlinks (install.c:494)
==1==    by 0x2427A0: unit_file_disable (install.c:1876)
==1==    by 0x18A633: method_disable_unit_files_generic (dbus-manager.c:1760)
==1==    by 0x18A6CA: method_disable_unit_files (dbus-manager.c:1768)
==1==    by 0x1D8146: method_callbacks_run (bus-objects.c:420)
==1==    by 0x1DA9D8: object_find_and_run (bus-objects.c:1257)
==1==    by 0x1DB01A: bus_process_object (bus-objects.c:1373)
==1==
==1== 228 (48 direct, 180 indirect) bytes in 2 blocks are definitely lost in loss record 8 of 14
==1==    at 0x4C2BBCF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1==    by 0x4C2DE2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1==    by 0x23DA60: unit_file_changes_add (install.c:233)
==1==    by 0x23DDB2: create_symlink (install.c:298)
==1==    by 0x240C5C: install_info_symlink_wants (install.c:1328)
==1==    by 0x240FC8: install_info_apply (install.c:1384)
==1==    by 0x241211: install_context_apply (install.c:1439)
==1==    by 0x242563: unit_file_enable (install.c:1830)
==1==    by 0x18A06E: method_enable_unit_files_generic (dbus-manager.c:1650)
==1==    by 0x18A141: method_enable_unit_files (dbus-manager.c:1660)
==1==    by 0x1D8146: method_callbacks_run (bus-objects.c:420)
==1==    by 0x1DA9D8: object_find_and_run (bus-objects.c:1257)
==1==
==1== 467 (144 direct, 323 indirect) bytes in 3 blocks are definitely lost in loss record 9 of 14
==1==    at 0x4C2DD9F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1==    by 0x23DA60: unit_file_changes_add (install.c:233)
==1==    by 0x23DE97: create_symlink (install.c:320)
==1==    by 0x242CFC: unit_file_set_default (install.c:1951)
==1==    by 0x18A881: method_set_default_target (dbus-manager.c:1802)
==1==    by 0x1D8146: method_callbacks_run (bus-objects.c:420)
==1==    by 0x1DA9D8: object_find_and_run (bus-objects.c:1257)
==1==    by 0x1DB01A: bus_process_object (bus-objects.c:1373)
==1==    by 0x259143: process_message (sd-bus.c:2567)
==1==    by 0x259326: process_running (sd-bus.c:2609)
==1==    by 0x259BDC: bus_process_internal (sd-bus.c:2798)
==1==    by 0x259CAD: sd_bus_process (sd-bus.c:2817)
==1==
==1== LEAK SUMMARY:
==1==    definitely lost: 216 bytes in 6 blocks
==1==    indirectly lost: 560 bytes in 14 blocks
==1==      possibly lost: 0 bytes in 0 blocks
==1==    still reachable: 65,536 bytes in 5 blocks
==1==         suppressed: 0 bytes in 0 blocks
==1== Reachable blocks (those to which a pointer was found) are not shown.
==1== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==1==

8 years agoMerge pull request #2334 from jwilk/spelling
Daniel Mack [Fri, 15 Jan 2016 12:11:16 +0000 (13:11 +0100)]
Merge pull request #2334 from jwilk/spelling

man: fix typos

8 years agoman: fix typos
Jakub Wilk [Fri, 15 Jan 2016 11:46:08 +0000 (12:46 +0100)]
man: fix typos

8 years agoMerge pull request #2328 from evverx/fix-transient-units-memeory-leak
Daniel Mack [Fri, 15 Jan 2016 08:03:34 +0000 (09:03 +0100)]
Merge pull request #2328 from evverx/fix-transient-units-memeory-leak

Fix transient units memory leak

8 years agotests: add function for valgrind wrapper creation
Evgeny Vereshchagin [Fri, 15 Jan 2016 02:52:12 +0000 (02:52 +0000)]
tests: add function for valgrind wrapper creation

I used it for d9814c7 and bffd87b

8 years agocore: fix memory leak in transient units
Evgeny Vereshchagin [Fri, 15 Jan 2016 02:41:27 +0000 (02:41 +0000)]
core: fix memory leak in transient units

Fixes:
==1== HEAP SUMMARY:
==1==     in use at exit: 67,182 bytes in 91 blocks
==1==   total heap usage: 70,485 allocs, 70,394 frees, 42,184,635 bytes
allocated
==1==
==1== 5,742 (696 direct, 5,046 indirect) bytes in 29 blocks are
definitely lost in loss record 4 of 7
==1==    at 0x4C2DD9F: realloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1==    by 0x21ADDD: realloc_multiply (alloc-util.h:67)
==1==    by 0x21BFB0: strv_push (strv.c:448)
==1==    by 0x21C245: strv_consume (strv.c:520)
==1==    by 0x21C33C: strv_extend (strv.c:559)
==1==    by 0x278AD7: unit_write_drop_in (unit.c:3352)
==1==    by 0x278EEB: unit_write_drop_in_private (unit.c:3403)
==1==    by 0x190C21: bus_service_set_transient_property
(dbus-service.c:254)
==1==    by 0x190DBC: bus_service_set_property (dbus-service.c:284)
==1==    by 0x18F00E: bus_unit_set_properties (dbus-unit.c:1226)
==1==    by 0x186F6A: transient_unit_from_message (dbus-manager.c:683)
==1==    by 0x1872B7: method_start_transient_unit (dbus-manager.c:763)
==1==
==1== LEAK SUMMARY:
==1==    definitely lost: 696 bytes in 29 blocks
==1==    indirectly lost: 5,046 bytes in 58 blocks
==1==      possibly lost: 0 bytes in 0 blocks
==1==    still reachable: 61,440 bytes in 4 blocks
==1==         suppressed: 0 bytes in 0 blocks

8 years agoMerge pull request #2322 from fbuihuu/downgrade-warn-for-not-found-unit
Zbigniew Jędrzejewski-Szmek [Thu, 14 Jan 2016 17:33:19 +0000 (12:33 -0500)]
Merge pull request #2322 from fbuihuu/downgrade-warn-for-not-found-unit

transaction: downgrade warnings about wanted units which are not found

8 years agoMerge pull request #2316 from poettering/dnssec14
Tom Gundersen [Thu, 14 Jan 2016 16:02:57 +0000 (17:02 +0100)]
Merge pull request #2316 from poettering/dnssec14

Fourteenth DNSSEC PR

8 years agoMerge pull request #2319 from walyong/log_msg_v04
Lennart Poettering [Thu, 14 Jan 2016 15:09:54 +0000 (16:09 +0100)]
Merge pull request #2319 from walyong/log_msg_v04

[v4] bus-util: print "systemctl --user" on user service manager

8 years agotransaction: downgrade warnings about wanted unit which are not found
Franck Bui [Thu, 14 Jan 2016 08:25:18 +0000 (09:25 +0100)]
transaction: downgrade warnings about wanted unit which are not found

If a unit was pulled by a Wants= dependency but its unit file was not
present then we logged this as an error.

However Wants= might be used to configure a soft/optional dependency
on another unit, ie. start an optional service only if it's installed
otherwise simply skip it. In this case emitting an error doesn't look
appropriate.

But it's still an error if the optional dependency exists but its
activation fails for any reasons.

8 years agoMerge pull request #2320 from evverx/fix-memory-leak-on-reload
Daniel Mack [Thu, 14 Jan 2016 09:35:45 +0000 (10:35 +0100)]
Merge pull request #2320 from evverx/fix-memory-leak-on-reload

Fix memory leak on daemon-reload

8 years agotests: add function for valgrind installation
Evgeny Vereshchagin [Thu, 14 Jan 2016 08:09:09 +0000 (08:09 +0000)]
tests: add function for valgrind installation

I used it for d9814c76ec35e53a6b6448c0
Very handy:)

8 years agocore: fix memory leak on reload
Evgeny Vereshchagin [Thu, 14 Jan 2016 07:38:12 +0000 (07:38 +0000)]
core: fix memory leak on reload

==1== HEAP SUMMARY:
==1==     in use at exit: 61,728 bytes in 22 blocks
==1==   total heap usage: 258,122 allocs, 258,100 frees, 78,219,628
bytes allocated
==1==
==1== 16 bytes in 1 blocks are definitely lost in loss record 1 of 6
==1==    at 0x4C2BBCF: malloc (vg_replace_malloc.c:299)
==1==    by 0x1E350E: memdup (alloc-util.c:34)
==1==    by 0x135AFB: memdup_multiply (alloc-util.h:74)
==1==    by 0x140F97: manager_set_default_rlimits (manager.c:2929)
==1==    by 0x1303DA: manager_set_defaults (main.c:737)
==1==    by 0x133A02: main (main.c:1718)
==1==
==1== 272 bytes in 17 blocks are definitely lost in loss record 2 of 6
==1==    at 0x4C2BBCF: malloc (vg_replace_malloc.c:299)
==1==    by 0x1E350E: memdup (alloc-util.c:34)
==1==    by 0x135AFB: memdup_multiply (alloc-util.h:74)
==1==    by 0x140F97: manager_set_default_rlimits (manager.c:2929)
==1==    by 0x1303DA: manager_set_defaults (main.c:737)
==1==    by 0x13480D: main (main.c:1828)
==1==
==1== LEAK SUMMARY:
==1==    definitely lost: 288 bytes in 18 blocks
==1==    indirectly lost: 0 bytes in 0 blocks
==1==      possibly lost: 0 bytes in 0 blocks
==1==    still reachable: 61,440 bytes in 4 blocks
==1==         suppressed: 0 bytes in 0 blocks
==1== Reachable blocks (those to which a pointer was found) are not
shown.
==1== To see them, rerun with: --leak-check=full --show-leak-kinds=all

8 years agobus-util: print "systemctl --user" on user service manager
WaLyong Cho [Tue, 29 Dec 2015 05:15:04 +0000 (14:15 +0900)]
bus-util: print "systemctl --user" on user service manager

When a unit was started with "systemctl --user" and it failed, error
messages is printed as "systemctl status". But it should be "systemctl
--user status".

8 years agoMerge pull request #2317 from evverx/rm-mtab
Daniel Mack [Thu, 14 Jan 2016 00:40:27 +0000 (01:40 +0100)]
Merge pull request #2317 from evverx/rm-mtab

README, tests: remove /etc/mtab

8 years agoREADME, tests: remove /etc/mtab
Evgeny Vereshchagin [Thu, 14 Jan 2016 00:06:12 +0000 (00:06 +0000)]
README, tests: remove /etc/mtab

This is a followup for 1d40ddb

8 years agoshared: reuse dns_label_unescape_undo_idna() in more places
Lennart Poettering [Wed, 13 Jan 2016 19:45:56 +0000 (20:45 +0100)]
shared: reuse dns_label_unescape_undo_idna() in more places

We frequently unescape DNS label follwed by IDNA undoing. We now have a function that does that in one step, hence use
it everywhere.

8 years agoshared: simplify string concatenation with strjoin()
Lennart Poettering [Wed, 13 Jan 2016 19:45:20 +0000 (20:45 +0100)]
shared: simplify string concatenation with strjoin()

8 years agoshared: port dns_name_compare_func() to make use of ascii_strcasecmp_nn()
Lennart Poettering [Wed, 13 Jan 2016 19:20:52 +0000 (20:20 +0100)]
shared: port dns_name_compare_func() to make use of ascii_strcasecmp_nn()

This way we become compatible with DNS names with embedded NUL bytes.

8 years agoshared: simplify dns_name_is_single_label() by using dns_name_parent() to skip first...
Lennart Poettering [Wed, 13 Jan 2016 18:51:09 +0000 (19:51 +0100)]
shared: simplify dns_name_is_single_label() by using dns_name_parent() to skip first label

8 years agobasic: add ascii_strcasecmp_nn() call
Lennart Poettering [Wed, 13 Jan 2016 18:45:05 +0000 (19:45 +0100)]
basic: add ascii_strcasecmp_nn() call

In contrast to ascii_strcasecmp_nn() it takes two character buffers with their individual length. It will then compare
the buffers up the smaller size of the two buffers, and finally the length themselves.

8 years agoshared: replace a few invocations of strcasecmp() for DNS labels with ascii_strcasecm...
Lennart Poettering [Wed, 13 Jan 2016 02:03:26 +0000 (03:03 +0100)]
shared: replace a few invocations of strcasecmp() for DNS labels with ascii_strcasecmp_n()

This makes our code compatible with embedded NUL bytes, as we don't care about NUL bytes anymore.

8 years agoresolved: implement the full NSEC and NSEC3 postive wildcard proofs
Lennart Poettering [Wed, 13 Jan 2016 01:45:28 +0000 (02:45 +0100)]
resolved: implement the full NSEC and NSEC3 postive wildcard proofs

8 years agoresolved: refuse validating wildcard RRs for SOA, NSEC3, DNAME
Lennart Poettering [Wed, 13 Jan 2016 01:29:31 +0000 (02:29 +0100)]
resolved: refuse validating wildcard RRs for SOA, NSEC3, DNAME

8 years agoresolved: properly handles RRs in domains beginning in an asterisk label
Lennart Poettering [Wed, 13 Jan 2016 01:26:23 +0000 (02:26 +0100)]
resolved: properly handles RRs in domains beginning in an asterisk label

Properly handle RRs that begin with an asterisk label. These are the unexpanded forms of wildcard domains and appear in
NSEC RRs for example. We need to make sure we handle the signatures of these RRs properly, since they mostly are
considered normal RRs, except that the RRSIG labels counter is one off for them, as the asterisk label is always
excluded of the signature.

8 years agoresolved: optimize dnssec_verify_rrset() a bit
Lennart Poettering [Wed, 13 Jan 2016 01:25:32 +0000 (02:25 +0100)]
resolved: optimize dnssec_verify_rrset() a bit

Let's determine the source of synthesis once instead of for each RR in the RRset.

8 years agoshared: add new dns_name_startswith() call
Lennart Poettering [Wed, 13 Jan 2016 01:23:08 +0000 (02:23 +0100)]
shared: add new dns_name_startswith() call

dns_name_startswith() is to dns_name_endswith() as startswith() is to endswith().

8 years agobasic: add new ascii_strcasecmp_n() call
Lennart Poettering [Wed, 13 Jan 2016 01:21:16 +0000 (02:21 +0100)]
basic: add new ascii_strcasecmp_n() call

8 years agosystemctl: improve wording of "systemctl enable" messages
Lennart Poettering [Wed, 13 Jan 2016 01:19:57 +0000 (02:19 +0100)]
systemctl: improve wording of "systemctl enable" messages

Closes: #2299

8 years agoresolved: allocate bounded strings on stack instead of heap, if we can
Lennart Poettering [Wed, 13 Jan 2016 01:14:20 +0000 (02:14 +0100)]
resolved: allocate bounded strings on stack instead of heap, if we can

8 years agoresolved: consider inverted RRSIG validity intervals expired
Lennart Poettering [Wed, 13 Jan 2016 00:04:03 +0000 (01:04 +0100)]
resolved: consider inverted RRSIG validity intervals expired

8 years agoupdate TODO
Lennart Poettering [Tue, 12 Jan 2016 21:14:49 +0000 (22:14 +0100)]
update TODO

8 years agoMerge pull request #2312 from jsynacek/master
Daniel Mack [Wed, 13 Jan 2016 12:29:33 +0000 (13:29 +0100)]
Merge pull request #2312 from jsynacek/master

man/tmpfiles.d: add note about permissions and ownership of symlinks

8 years agoman/tmpfiles.d: add note about permissions and ownership of symlinks
Jan Synacek [Wed, 13 Jan 2016 07:41:54 +0000 (08:41 +0100)]
man/tmpfiles.d: add note about permissions and ownership of symlinks

...because this is might not be obvious.

8 years agoMerge pull request #490 from pyssling/master
Lennart Poettering [Tue, 12 Jan 2016 22:30:20 +0000 (23:30 +0100)]
Merge pull request #490 from pyssling/master

Add machine-id setting

8 years agocore: Add machine-id setting
Nils Carlson [Sun, 5 Jul 2015 22:00:59 +0000 (00:00 +0200)]
core: Add machine-id setting

Allow for overriding all other machine-ids which may be present on
the system using a kernel command line systemd.machine_id or
--machine-id= option.

This is especially useful for network booted systems where the
machine-id needs to be static, or for containers where a specific
machine-id is wanted.

8 years agoMerge pull request #2131 from evverx/regenerate-m4-on-reconfigure
Lennart Poettering [Tue, 12 Jan 2016 19:35:55 +0000 (20:35 +0100)]
Merge pull request #2131 from evverx/regenerate-m4-on-reconfigure

build-sys: regenerate %.m4 -> % on reconfigure

8 years agoMerge pull request #2310 from vcaputo/sd-event-profiling-fixups
Lennart Poettering [Tue, 12 Jan 2016 18:45:01 +0000 (19:45 +0100)]
Merge pull request #2310 from vcaputo/sd-event-profiling-fixups

sd-event: minor fixups to delays profiling changes

8 years agosd-event: minor fixups to delays profiling changes
Vito Caputo [Tue, 12 Jan 2016 18:14:33 +0000 (10:14 -0800)]
sd-event: minor fixups to delays profiling changes

8 years agoMerge pull request #2147 from vcaputo/sd-event-measure-latencies
Lennart Poettering [Tue, 12 Jan 2016 17:52:30 +0000 (18:52 +0100)]
Merge pull request #2147 from vcaputo/sd-event-measure-latencies

sd-event: instrument sd_event_run() for profiling delays

8 years agosd-event: instrument sd_event_run() for profiling delays
Vito Caputo [Mon, 7 Dec 2015 19:28:18 +0000 (11:28 -0800)]
sd-event: instrument sd_event_run() for profiling delays

Set SD_EVENT_PROFILE_DELAYS to activate accounting and periodic logging
of the distribution of delays between sd_event_run() calls.

Time spent in dispatching as well as time spent outside of
sd_event_run() is measured and accounted for.  Every 5 seconds a
logarithmic histogram loop iteration delays since 5 seconds previous is
logged.

This is useful in identifying the frequency and magnitude of latencies
affecting the event loop, which should be kept to a minimum.

8 years agoMerge pull request #2308 from zonque/xsprintf
Lennart Poettering [Tue, 12 Jan 2016 15:03:48 +0000 (16:03 +0100)]
Merge pull request #2308 from zonque/xsprintf

tree-wide: use xsprintf() where applicable

8 years agotree-wide: use xsprintf() where applicable
Daniel Mack [Tue, 12 Jan 2016 14:34:20 +0000 (15:34 +0100)]
tree-wide: use xsprintf() where applicable

Also add a coccinelle receipt to help with such transitions.

8 years agoMerge pull request #2265 from ipuustin/ambient
Lennart Poettering [Tue, 12 Jan 2016 14:16:24 +0000 (15:16 +0100)]
Merge pull request #2265 from ipuustin/ambient

capabilities: added support for ambient capabilities.

8 years agoMerge pull request #2303 from aadamowski/fix-miscalculated-buffer
Daniel Mack [Tue, 12 Jan 2016 14:06:41 +0000 (15:06 +0100)]
Merge pull request #2303 from aadamowski/fix-miscalculated-buffer

Fix miscalculated buffer size and uses of size-unlimited sprintf()

8 years agoman: add AmbientCapabilities entry.
Ismo Puustinen [Mon, 11 Jan 2016 07:36:14 +0000 (09:36 +0200)]
man: add AmbientCapabilities entry.

8 years agotests: test ambient capabilities.
Ismo Puustinen [Tue, 5 Jan 2016 11:34:41 +0000 (13:34 +0200)]
tests: test ambient capabilities.

The ambient capability tests are only run if the kernel has support for
ambient capabilities.

8 years agocapabilities: added support for ambient capabilities.
Ismo Puustinen [Thu, 31 Dec 2015 12:54:44 +0000 (14:54 +0200)]
capabilities: added support for ambient capabilities.

This patch adds support for ambient capabilities in service files. The
idea with ambient capabilities is that the execed processes can run with
non-root user and get some inherited capabilities, without having any
need to add the capabilities to the executable file.

You need at least Linux 4.3 to use ambient capabilities. SecureBit
keep-caps is automatically added when you use ambient capabilities and
wish to change the user.

An example system service file might look like this:

[Unit]
Description=Service for testing caps

[Service]
ExecStart=/usr/bin/sleep 10000
User=nobody
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW

After starting the service it has these capabilities:

CapInh: 0000000000003000
CapPrm: 0000000000003000
CapEff: 0000000000003000
CapBnd: 0000003fffffffff
CapAmb: 0000000000003000

8 years agocapabilities: keep bounding set in non-inverted format.
Ismo Puustinen [Thu, 7 Jan 2016 22:00:04 +0000 (00:00 +0200)]
capabilities: keep bounding set in non-inverted format.

Change the capability bounding set parser and logic so that the bounding
set is kept as a positive set internally. This means that the set
reflects those capabilities that we want to keep instead of drop.

8 years agoMerge pull request #2290 from vcaputo/normalize-log-source-priorities
Lennart Poettering [Tue, 12 Jan 2016 01:03:23 +0000 (02:03 +0100)]
Merge pull request #2290 from vcaputo/normalize-log-source-priorities

journal: normalize priority of logging sources

8 years agoFix miscalculated buffer size and uses of size-unlimited sprintf()
Aleksander Adamowski [Mon, 11 Jan 2016 23:26:41 +0000 (15:26 -0800)]
Fix miscalculated buffer size and uses of size-unlimited sprintf()
function.

Not sure if this results in an exploitable buffer overflow, probably not
since the the int value is likely sanitized somewhere earlier and it's
being put through a bit mask shortly before being used.

8 years agoMerge pull request #2289 from poettering/dnssec13
Tom Gundersen [Mon, 11 Jan 2016 20:31:53 +0000 (21:31 +0100)]
Merge pull request #2289 from poettering/dnssec13

Thirteenth DNSSEC patch set

8 years agoresolved: improve query RR type error wording a bit
Lennart Poettering [Mon, 11 Jan 2016 19:19:10 +0000 (20:19 +0100)]
resolved: improve query RR type error wording a bit

8 years agoresolved: don#t allow explicit queries for RRSIG RRs
Lennart Poettering [Mon, 11 Jan 2016 19:15:28 +0000 (20:15 +0100)]
resolved: don#t allow explicit queries for RRSIG RRs

We wouldn't know how to validate them, since they are the signatures, and hence have no signatures.

8 years agoresolved: refuse doing queries for known-obsolete RR types
Lennart Poettering [Mon, 11 Jan 2016 19:05:29 +0000 (20:05 +0100)]
resolved: refuse doing queries for known-obsolete RR types

Given how fragile DNS servers are with some DNS types, and given that we really should avoid confusing them with
known-weird lookups, refuse doing lookups for known-obsolete RR types.

8 years agoresolved: rename DnsTransaction's current_features field to current_feature_level
Lennart Poettering [Mon, 11 Jan 2016 18:38:25 +0000 (19:38 +0100)]
resolved: rename DnsTransaction's current_features field to current_feature_level

This is a follow-up for f4461e5641d53f27d6e76e0607bdaa9c0c58c1f6.