Commit graph

4580 commits

Author SHA1 Message Date
Simon McVittie
e4724af4ee _read_subprocess_line_argv: use _dbus_ensure_standard_fds
This also gives us an opportunity to improve the error reporting.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97008
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2016-07-25 11:27:13 +01:00
Simon McVittie
fef477f150 dbus-launch: use _dbus_ensure_standard_fds when closing stderr
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97008
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2016-07-25 11:27:03 +01:00
Simon McVittie
f0819f926f dbus-launch: use _dbus_ensure_standard_fds() in the babysitter
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97008
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2016-07-25 11:26:52 +01:00
Simon McVittie
57593b18fc _dbus_become_daemon: use _dbus_ensure_standard_fds, and report errors
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97008
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2016-07-25 11:26:43 +01:00
Simon McVittie
c8f73a2a3a dbus-daemon, dbus-launch: cope with callers having closed standard fds
In Debian bug <https://bugs.debian.org/829348>, lightdm appears to
have been starting dbus-launch with at least one of the three
standard fds 0, 1, 2 (stdin, stdout, stderr) closed. This resulted
in the dbus-daemon's epoll_create1() returning a fd less than 3.
Later, _dbus_become_daemon() replaces fds 0-2 with /dev/null. As a
result, a subsequent call to _dbus_loop_add_watch() for the reload
pipe resulted in calling epoll_ctl on the non-epoll fd pointing to
/dev/null, which fails with EINVAL, resulting in the dbus-daemon
exiting unsuccessfully.

Unix programs are not normally expected to behave correctly when
launched with the standard fds not already open; but at the same time,
X11 autolaunching means that dbus-launch (and hence the dbus-daemon)
can get started from an arbitrarily precarious situation.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97008
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2016-07-25 11:26:36 +01:00
Simon McVittie
69123a6bd2 _dbus_ensure_standard_fds: new function to ensure std* fds are open
This function opens stdin, stdout, stderr pointing to /dev/null
if they aren't already open. Optionally, it can also replace
whatever is available on those fds with /dev/null.

To allow for use in contexts where only async-signal-safe functions
should be used, such as between fork() and a following exec(),
this function does not use conventional libdbus error handling
(which would require malloc). Instead, it sets errno and returns
an explanatory string.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97008
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
2016-07-25 11:26:01 +01:00
Ralf Habacker
e3a14eb4fd dbus: do not include unused afxres.h on windows.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=96181
Reviewed-by: simon.mcvittie@collabora.co.uk
2016-07-23 17:16:53 +02:00
Simon McVittie
b04d9324fb dbus-launch: add --exit-with-x11 option
This is more suitable for distributions' Xsession scripts: it verifies
that X is already available, and so never results in an attempt to poll
stdin.

We read the machine UUID because it is needed to set the X atoms.
x11_init() assumes that the machine UUID (global variable) has been
set, either via read_machine_uuid_if_needed() or save_machine_uuid().
This is pretty tangled, but to make The Right Thing happen
automatically, we'd need to redo dbus-launch in terms of DBusError.

Reviewed-by: Will Thompson
Reviewed-by: Thiago Macieira
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39197
Signed-off-by: Simon McVittie <smcv@debian.org>
2016-07-20 13:32:36 +01:00
Deepika Aggarwal
b36708830b Be explicit about enum comparison in bus_config_load()
XML_Parse() can potentially return values other than OK (1) or ERROR (0),
and they aren't errors.

Signed-off-by: Deepika Aggarwal <deepika.a@samsung.com>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=93205
[smcv: improve commit message, fix whitespace]
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-07-01 16:46:04 +01:00
Deepika Aggarwal
187ae737ec bus: reassure static analysis tool that server slot allocation can't fail
The NULL-dereference is not actually possible in this case, because we
know that the allocation and setup were done previously.

Signed-off-by: Deepika Aggarwal <deepika.a@samsung.com>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=93210
2016-07-01 16:42:18 +01:00
Nick Lewycky
42a514d917 Add an invalid state in DBusAuthState to use for invalid lines in auth scripts.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=93909
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-07-01 16:39:05 +01:00
Simon McVittie
66ab9b43a2 NEWS for 1.11.x 2016-06-30 14:47:21 +01:00
Simon McVittie
313036c2a4 Merge branch 'dbus-1.10' 2016-06-30 14:41:23 +01:00
Simon McVittie
2a5dccf0ab Update NEWS 2016-06-30 14:40:24 +01:00
Philip Withnall
771593c21d spec: Clarify the marshaling format in a few minor ways
This is an attempt to make that section a little clearer. I don’t think
any factual inaccuracies have been fixed (because I couldn’t find any).

Including some wording and an example by Simon McVittie.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=93382
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-06-30 14:07:10 +01:00
Simon McVittie
e536ea93ec Merge branch 'dbus-1.10' 2016-06-30 13:56:44 +01:00
WaLyong Cho
2fe59f1892 activation: set children oom_score_adj to 0
If dbus is running as systemd service, dbus daemon is running with
oom_score_adj -900 by OOMScoreAdjust=-900. And children will also have
same value with dbus daemon.
To avoid this, set the child itself values after fork () to 0.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32851
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-06-30 13:54:10 +01:00
Руслан Ижбулатов
e0f26388f7 Use dbus_set_error_from_message() to check for an error
Do not rely on dbus_message_get_args() to turn an ERROR message
into DBusError.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=96653
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-06-30 13:52:44 +01:00
Thiago Macieira
07af048dd2 Quote the DBUS_SESSION_BUS_ADDRESS variable in the shell file
Some D-Bus daemon versions set multiple addresses separated by semi-colon,
which breaks sourcing of the file.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=94746
Signed-off-by: Thiago Macieira <thiago@kde.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-06-30 13:51:45 +01:00
Thiago Macieira
d64d5f996b Quote the DBUS_SESSION_BUS_ADDRESS variable in the shell file
Some D-Bus daemon versions set multiple addresses separated by semi-colon,
which breaks sourcing of the file.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=94746
Signed-off-by: Thiago Macieira <thiago@kde.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-06-30 13:51:20 +01:00
Ralf Habacker
b6bc658103 Migrate platform specific spawn tests into cross platform tests.
Also enable segfault checks on windows because the reason why it
has been disabled has been fixed with bug #95155.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-20 06:18:20 +02:00
Simon McVittie
78362cfc62 test-segfault: add missing include of <stdio.h> on Windows
Needed for fprintf (stderr, ...).

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
(cherry picked from commit 07b7dcd717)
2016-05-18 18:13:48 +01:00
Simon McVittie
8f6fe1451e travis: compile with mingw in both production and debug flavours
This should detect anything that is only a build failure when embedded
tests or verbose mode are enabled, such as the missing include fixed
in commit 4858faf. I'm not enabling embedded tests and verbose mode
orthogonally because we don't want CI builds to take too long.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
2016-05-18 18:12:36 +01:00
Simon McVittie
07b7dcd717 test-segfault: add missing include of <stdio.h> on Windows
Needed for fprintf (stderr, ...).

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
2016-05-16 21:20:19 +02:00
Ralf Habacker
37241fc0e1 Fix memory leak issue in spawn code on Windows.
In _dbus_babysitter_block_for_child_exit () use spawning
thread handle to have a reliable way to detect spawning
thread termination.

See https://bugs.freedesktop.org/show_bug.cgi?id=95191#c33
for more informations.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-16 14:11:24 +02:00
Ralf Habacker
4858faf14e Fix compiling on windows/mingw with automake build system.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-16 14:11:24 +02:00
Ralf Habacker
c126716ada Merge branch 'dbus-1.10' 2016-05-16 12:57:04 +02:00
Ralf Habacker
7bcaf35bca Fix ambiguous setup of DBusBabySitter struct member child_handle on Windows.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-16 12:52:25 +02:00
Simon McVittie
5ef8b4dc59 dbus-spawn-win: Do not attempt to call child_setup (again)
This reinstates part of commit 420f3474, fixing a mis-merge in
commit 8c0d5980.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-13 16:03:57 +02:00
Ralf Habacker
8c0d598029 Merge branch 'dbus-1.10' 2016-05-13 15:32:44 +02:00
Ralf Habacker
7f7a6fdb1d Prefix debug messages displayed with _dbus_verbose() with a timestamp.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-13 15:31:05 +02:00
Ralf Habacker
dc71d04010 Display thread id in _dbus_verbose to be able to see threading issues.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-13 15:28:56 +02:00
Ralf Habacker
baeea825a4 On Windows make access to member 'refcount' of struct DBusBabysitter thread safe.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-13 13:39:30 +02:00
Ralf Habacker
a5c51278ad Eliminates a race condition accessing DBusBabysitter instance at startup of babysitter() on Windows.
Ensure that the babysitter thread already owns its one reference to the
babysitter when it starts up, and eliminates the race condition.
This patch requires that DBusBabysitter refcounting is thread-safe
and is based on an analysis and proposal of Simon Mc Vittie.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-13 13:39:19 +02:00
Ralf Habacker
9ab7fe33f8 Fix memory leak in _dbus_replace_install_prefix() on success case on Windows.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95191
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-10 14:16:54 +02:00
Ralf Habacker
a050be5b6a Merge branch 'dbus-1.10' 2016-05-09 21:50:56 +02:00
Ralf Habacker
5ef167c139 Suppress Windows popups and jit debugger when app crashes with exception.
Based on a patch from Yiyang Fei.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95155
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-05-09 21:49:22 +02:00
Lennart Poettering
12bd6e893c sysdeps: increase listen() backlog of AF_UNIX sockets to SOMAXCONN
Previously, the listen() backlog was set to an arbitrary 30. This means
that if dbus-daemon is overloaded only 30 more connections may be queued
by the kernel, before connect() fails with EAGAIN. (Note that EAGAIN !=
EINPROGRESS -- the latter is what is returned if a connection is queued
and being processed for asynchronous sockets; EAGAIN in this case is
really an error, that cannot be recovered from).

Most software simply sets SOMAXCONN as backlog for AF_UNIX sockets, to
allow queuing of as many connections as the kernel allows. SOMAXCONN is
128 on Linux, which is not particularly high, but at least higher than
30.

This patch changes dbus-daemon to do the same.

I noticed this when flooding dbus-daemon with a lot of connections,
where it pretty quickly ceased to respond, much earlier than it really
should.

Note that the backlog has nothing to do with the number of concurrent
connections allowed, it simply controls how many queued, but not
accept()ed connections there may be on the listening socket.

https://bugs.freedesktop.org/show_bug.cgi?id=95264
2016-05-09 14:06:52 +02:00
Ralf Habacker
056d138255 Merge branch 'dbus-1.10' 2016-05-02 07:20:03 +02:00
Yiyang Fei
cdf9fd02d2 Fix crash in test-spawn unit test app on Windows.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95160
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-04-29 19:23:35 +02:00
Ralf Habacker
eaf231b7db Fix assert in test-spawn caused by missing initialization of DBusError instance on gcc builds.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95160
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
(cherry picked from commit 9323a621e8)
2016-04-29 19:19:57 +02:00
Ralf Habacker
9323a621e8 Fix assert in test-spawn caused by missing initialization of DBusError instance on gcc builds.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95160
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2016-04-29 13:08:14 +02:00
Ralf Habacker
072cdf11ab dbus_internal_do_not_use_try_message_data: Calling _dbus_message_loader_get_max_message_size(loader) is only useful for its return value, which is ignored (CID 54725).
Reported by Coverity: CID 54725: Useless call (USELESS_CALL)

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90021
2016-04-14 13:58:13 +02:00
Simon McVittie
0621b5790e 1.11.3 2016-03-07 20:54:05 +00:00
Simon McVittie
4e06dcf35b 1.11.2 2016-03-07 19:36:01 +00:00
Simon McVittie
f5a0ff67eb Merge branch 'dbus-1.10' 2016-03-07 19:33:04 +00:00
Simon McVittie
ffa99f343d 1.10.9 2016-03-07 19:31:52 +00:00
Simon McVittie
dc8f8c5294 1.10.8
Signed-off-by: Simon McVittie <smcv@debian.org>
2016-03-07 16:07:20 +00:00
Simon McVittie
3fb0baf189 Merge branch 'dbus-1.10-ci' 2016-03-03 07:31:42 +00:00
Simon McVittie
4b069c8a4c Disable travis-ci apt source for Google Chrome
This prevents adding i386 as a foreign architecture. We don't need
Chrome anyway.

Signed-off-by: Simon McVittie <smcv@debian.org>
2016-03-02 22:26:47 +00:00