Commit graph

3910 commits

Author SHA1 Message Date
Simon McVittie
a261ec6695 Merge branch 'dbus-1.8'
Conflicts:
	NEWS
	configure.ac
2014-06-10 18:36:00 +01:00
Simon McVittie
c3650785fe Prepare embargoed security release 2014-06-05 14:54:36 +01:00
Alban Crequy
24c590703c CVE-2014-3477: deliver activation errors correctly, fixing Denial of Service
How it should work:

When a D-Bus message activates a service, LSMs (SELinux or AppArmor) check
whether the message can be delivered after the service has been activated. The
service is considered activated when its well-known name is requested with
org.freedesktop.DBus.RequestName. When the message delivery is denied, the
service stays activated but should not receive the activating message (the
message which triggered the activation). dbus-daemon is supposed to drop the
activating message and reply to the sender with a D-Bus error message.

However, it does not work as expected:

1. The error message is delivered to the service instead of being delivered to
   the sender. As an example, the error message could be something like:

     An SELinux policy prevents this sender from sending this
     message to this recipient, [...] member="MaliciousMethod"

   If the sender and the service are malicious confederates and agree on a
   protocol to insert information in the member name, the sender can leak
   information to the service, even though the LSM attempted to block the
   communication between the sender and the service.

2. The error message is delivered as a reply to the RequestName call from
   service. It means the activated service will believe it cannot request the
   name and might exit. The sender could activate the service frequently and
   systemd will give up activating it. Thus the denial of service.

The following changes fix the bug:
- bus_activation_send_pending_auto_activation_messages() only returns an error
  in case of OOM. The prototype is changed to return TRUE, or FALSE on OOM
  (and its only caller sets the OOM error).
- When a client is not allowed to talk to the service, a D-Bus error message
  is pre-allocated to be delivered to the client as part of the transaction.
  The error is not propagated to the caller so RequestName will not fail
  (except on OOM).

[fixed a misleading comment -smcv]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=78979
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters <walters@verbum.org>
2014-06-05 14:36:17 +01:00
Simon McVittie
6e21873d63 Merge branch 'dbus-1.8'
Conflicts:
	NEWS
	configure.ac
2014-04-30 21:05:46 +01:00
Simon McVittie
416898324d development version 2014-04-30 20:58:39 +01:00
Simon McVittie
789800af43 1.8.2 2014-04-30 20:14:51 +01:00
Руслан Ижбулатов
28812c885f Handle 0x0d0a EOLs in spawn_dbus_daemon()
On W32 dbus daemon will print output in text mode, with 0x0d0a EOLs instead
of just 0x0a. Be able to handle that.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=75863
Reviewed-by: Simon McVittie
2014-04-30 19:42:22 +01:00
Simon McVittie
c02ac70566 NEWS 2014-04-30 19:21:47 +01:00
Роман Донченко
3be6063729 Avoid killing all available processes if an X error arrives early on
The timeline of events in dbus-launch's main process goes something like this:

* do initial X calls
[1]
* do some other stuff
* fork
    (child process starts doing some other stuff)
* return "intermediate parent" pid from fork()
* obtain bus daemon pid from bus_pid_to_launcher_pipe
[2]
* do things that might include X11 calls or killing the dbus-daemon

Meanwhile, the "babysitter" child goes like this:

* return 0 from fork()
[3]
* obtain bus daemon pid from parent process via bus_pid_to_babysitter_pipe
[4]
* do things that might include X11 calls or killing the bus daemon

Before [1] or [3], the right thing to do about an X error is to just
exit. The current implementation called kill(-1) first, which is
undesirable: it kills unrelated processes. With this change, we
just exit.

After [2] or [4], the right thing to do is to kill the dbus-daemon,
and that's what the existing code did.

Between [1] and [2], or between [3] and [4], there is no correct thing
that we can do immediately: we would have to wait for the end of the
"critical section", *then* kill the dbus-daemon. This has not yet been
implemented, so this patch relies for its correctness on the fact that
there are no libX11 calls between those points, so we cannot receive
an X error between them.

dbus-launch deserves more comments, or a reimplementation that is easier to
understand, but this change is certainly better than nothing.

[Commit message added, summarizing reviewers' comments -smcv]
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=74698
Reviewed-by: Simon McVittie
Reviewed-by: Thiago Macieira
2014-04-30 19:11:56 +01:00
Simon McVittie
3c287fc38b NEWS 2014-04-28 16:01:24 +01:00
Chengwei Yang
3e5b148dcd Set argv[0] to dbus-launch to avoid misleading info from /proc
At previous, argv[0] is the full-qualified path of program, however, if
start dbus-launch failed, it will fall back to find one from $PATH,
while keep the argv[0] as the full-qualified path. So we'll get
misleading info from /proc or ps(1) about dbus-launch process.

One simple solution is just hard-code argv[0] to dbus-launch.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=69716
Reviewed-by: Simon McVittie
2014-04-28 16:00:11 +01:00
Simon McVittie
9383a02274 more NEWS for 1.9 2014-04-28 15:48:40 +01:00
Simon McVittie
6ebf75590e Merge branch 'dbus-1.8'
Conflicts:
	NEWS
2014-04-28 15:46:53 +01:00
Simon McVittie
370ba31171 NEWS for 1.8 2014-04-28 15:45:22 +01:00
Cameron Norman
29c1cf57b5 Add "Documentation=man:dbus-daemon(1)" line to systemd service
Enhances usability under systemd by making the documentation available
with systemctl status or systemctl help.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=77447
Reviewed-by: Simon McVittie
2014-04-28 15:42:11 +01:00
Simon McVittie
c030410717 Try to read /etc/machine-id before inventing a new /var/lib/dbus/machine-id
It's least confusing if the two files have the same contents. systemd
already knows how to pick up our /var/lib/dbus/machine-id if it exists
and /etc/machine-id doesn't, but the converse is not currently true.
We should make it true, so that it doesn't matter what order
systemd-machine-id-setup and "dbus-uuidgen --ensure" were
invoked in.

In Debian, systemd currently Recommends dbus, so "dbus-uuidgen --ensure"
will *usually* - but not always! - run first, and the two files will
match. However, if you install systemd without dbus, and then install
dbus later, there will be a mismatch. With this change, it doesn't
matter which one is installed first: whichever one happens to come
first, it will generate the machine ID, and then the other one will
copy it.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=77941
Reviewed-by: Lennart Poettering
2014-04-28 14:59:54 +01:00
Simon McVittie
cdb8991517 _dbus_write_uuid_file: factor out function to write a known UUID
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=77941
Reviewed-by: Lennart Poettering
2014-04-28 14:59:29 +01:00
Руслан Ижбулатов
d274bd42fe Make documentation generating MSYS/MSYS2-compatible
xmlto is a shell script, it needs to be fed MSYSsy filenames.
This patch adds a cygpath invocation for filename conversion (autotools do
that automatically, for CMake you have to spell it out). Cygwpath is available
in MSYS2 (and Cygwin, obviously).
When cygpath is not available, use MSYS-specific pwd extension to get W32 path.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=75860
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
2014-03-20 10:57:31 +01:00
Simon McVittie
d40025871a Merge branch 'dbus-1.8' 2014-03-13 12:15:26 +00:00
David Zeuthen
7a327b5114 Update email-address for David Zeuthen.
I no longer have the email address davidz@redhat.com so update it to
my current address.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=75288
2014-03-13 12:14:13 +00:00
Simon McVittie
f4423d4c09 Merge branch 'dbus-1.8' 2014-03-06 13:11:09 +00:00
Lukasz Skalski
9e7610ef17 Update .gitignore files
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=75833
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-03-06 13:10:56 +00:00
Simon McVittie
1895a8ee5b .gitignore: ignore /test-driver, generated by recent Automake 2014-03-03 15:59:10 +00:00
Simon McVittie
1e02331978 NEWS for 1.9 2014-03-03 15:58:42 +00:00
Simon McVittie
c561045cff Merge branch 'dbus-1.8' 2014-03-03 15:44:51 +00:00
Simon McVittie
5202a0310d NEWS for dbus-1.8 2014-03-03 15:44:44 +00:00
Matt Hoosier
dd4e09339f Disable slow-start on TCP sockets
Leaving Nagle's algorithm enabled on the TCP transport leads to some
really long latencies (at least, during the first several messages).

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=75544
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-03-03 15:36:47 +00:00
Antoine Jacoutot
e2bd0b1317 Fix error message.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73887
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-02-19 16:52:29 +00:00
Simon McVittie
7fb57c7576 Only support systemd: transport if we have systemd libraries
This means we can drop our convenience copy of sd-daemon.[ch]. We're
checking for libsd-daemon anyway, to support journald and logind
integration.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=71818
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2014-02-19 16:52:29 +00:00
Ralf Habacker
ea1884e3e5 Keep cmake generated shared dbus-1 library file name in sync with autotools.
Autotools uses a versioned shared library name derived from libtool.
This patch adds a versioned shared library name to cmake builds for all
supported platforms. Binary compatibility for clients build against older
cmake generated binary packages of dbus is provided; on unix like os
with symbolic links and on Windows with a copy of the shared library.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=74117
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-30 17:09:41 +01:00
Ralf Habacker
fb84b3e592 Merge branch 'dbus-1.8' 2014-01-27 19:33:32 +01:00
Cristian Onet
3dbd8edc35 Fix of 'dbus-daemon can only handle 64 simultaneous connections on Windows'.
[Slightly modified by -rh]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=71297
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-27 19:32:41 +01:00
Ralf Habacker
4224ba6213 Merge branch 'dbus-1.8' 2014-01-21 21:11:25 +01:00
Ralf Habacker
c39722e286 Give cmake users some hints/requirements when cross compiling for Windows on Linux.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=41252
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-21 21:09:55 +01:00
Simon McVittie
51c9a15922 start spec 0.24 2014-01-20 16:12:56 +00:00
Simon McVittie
d48a2891de start towards 1.9 2014-01-20 16:12:45 +00:00
Simon McVittie
469ef6e082 1.8.1 2014-01-20 16:11:58 +00:00
Simon McVittie
6528b0973b D-Bus 1.8.0 2014-01-20 14:25:48 +00:00
Simon McVittie
41b3f5b86c Revert "start spec 0.24"
It hasn't otherwise changed since 1.7.10.

This reverts commit fb16f80d45.
2014-01-20 13:40:30 +00:00
Ralf Habacker
5dfc800644 Let cmake 'make check' run test applications as test group.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:29:37 +00:00
Ralf Habacker
7e373d4527 Rename bus-test-launch-helper to test-bus-launch_helper to match common test application naming scheme.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:29:37 +00:00
Ralf Habacker
cf41239d66 Rename bus-test-system to test-bus-system to match common test application naming scheme.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:29:37 +00:00
Ralf Habacker
3ce5d21edf Rename bus-test to test-bus to match common test application naming scheme.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:29:37 +00:00
Ralf Habacker
54440baa21 Rename spawn-test to test-spawn to match common test application naming scheme.
[Same change as for shell-test in the previous commit. -smcv]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:29:19 +00:00
Ralf Habacker
e782b0806e Rename shell-test to test-shell to match common test application naming scheme.
[Add its source file to SOURCES: this test was previously relying on the
Automake feature that the default value of foo_bar_SOURCES is foo-bar.c. -smcv]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:28:39 +00:00
Ralf Habacker
0cd0714994 Rename dbus-test to test-dbus to match common test application naming scheme.
[reverted the dbus-specification part -smcv]
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73495
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 16:17:02 +00:00
Simon McVittie
8875cdf025 Correct test for LIBTOOLIZE by quoting it
Based on a patch from Roland <blueburn85 gmail com>.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73278
2014-01-17 15:58:43 +00:00
Ralf Habacker
d1699118c9 CMake warning--.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=41252
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-17 12:09:33 +01:00
Simon McVittie
08e3ab8682 NEWS 2014-01-14 11:07:39 +00:00
Matt Hoosier
fc3bf2f304 Don't forget allow_anonymous when merging configs
The algorithm to collapse a subsidiary config file's data into the
master data structure forgot to examine this flag.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73475
Reviewed-by: Chengwei Yang <chengwei.yang@intel.com>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2014-01-14 11:04:18 +00:00