Commit graph

2731 commits

Author SHA1 Message Date
Simon McVittie
96a6d14376 Make _dbus_directory_get_next_file use readdir, not readdir_r
This isn't thread-safe or reentrant, but it turns out we don't need
either of those properties, and readdir_r is a real pain to use correctly,
particularly in the presence of FUSE filesystems that might implement
statfs() wrong.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=8284
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=15922
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-01-25 13:18:15 +00:00
Simon McVittie
a431ced679 test/name-test: remove dangling references to test-names.c, which is absent
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-01-25 13:18:03 +00:00
Simon McVittie
d855baed00 fix check for 32-bit integers if short is 32 bits long
In practice, this won't happen for years, but we might as well be correct.

Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-01-25 13:17:44 +00:00
Simon McVittie
460e6282d6 _dbus_loop_iterate: if the kernel says a fd is bad, stop watching it
Again, this shouldn't happen - modules are responsible for cleaning up
their watches - but the failure mode here is really bad: if we leave an
invalid fd in the set, every poll() call will instantly return, marking
it as POLLNVAL. The result is that dbus-daemon busy-loops on poll()
without responding to I/O, so the bad watch will probably never be
cleared up.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32992
Bug-NB: NB#200248
Reviewed-by: Colin Walters <walters@verbum.org>
2011-01-21 15:01:37 +00:00
Simon McVittie
f3ed53a30f _dbus_loop_iterate: cleanup: make more use of a temporary variable
It was added by the previous commit.

Reviewed-by: Colin Walters <walters@verbum.org>
2011-01-21 15:01:24 +00:00
Simon McVittie
f740396874 _dbus_loop_iterate: if a watch has been invalidated, skip it
This shouldn't happen - other modules are responsible for cleaning up
their watches - but the bug fixed in my last commit has been present for
several years and I'm sure it's not the only one, so for robustness,
let's refuse to watch obviously-wrong file descriptors.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32992
Bug-NB: NB#200248
Reviewed-by: Colin Walters <walters@verbum.org>
2011-01-21 15:01:16 +00:00
Simon McVittie
ca18baf83a dbus-spawn: don't leave bad file descriptors being watched
The code called from handle_watch() might close either or both of the
sockets we're watching, without cleaning up the DBusWatch. This results
in invalid file descriptors being passed to _dbus_poll(), which could
end up busy-looping on a POLLNVAL condition until the babysitter loses
its last ref (which automatically clears up both watches).

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32992
Bug-NB: NB#200248
Reviewed-by: Colin Walters <walters@verbum.org>
2011-01-21 15:00:25 +00:00
Simon McVittie
4fa3a89d32 test-privserver-client: wait for server to die between iterations
This fixes a race condition: the server exits while the client continues
to the next iteration. If the server wins, the test passes. If the client
wins, it sends a message to the dying service, never gets a reply, and the
test fails.

My branch to refactor the main loop for fd.o #23194 seems to make the
client more likely to win this race, resulting in intermittent test
failures.

This is an instance of the general problem described by fd.o #11454.
2011-01-21 14:22:39 +00:00
Simon McVittie
a9327eba3c test_server_shutdown: disconnect the server before causing it to be freed
Otherwise we die with an assertion failure.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33277
2011-01-21 14:22:39 +00:00
Simon McVittie
e529c4bcdb test_server_setup: allocate two server-data blobs, for watches and timeouts
This is similar to how ConnectionData works. Without this change, we
deserve to segfault: when the first set of callbacks (either watches or
timeouts) is cleaned up, we unref the server and loop, and free sd;
when the second set of callbacks is cleaned up, we use-after-free sd,
the server and the loop, then double-free sd.

However, due to fd.o #33277 we don't even get that far, because we've
already died with an assertion failure.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33277
2011-01-21 14:22:39 +00:00
Simon McVittie
c894f62f2c test_server_setup: on OOM while setting up watch/timeout, don't leak sd
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Reviwed-by: Colin Walters <walters@verbum.org>
2011-01-21 13:28:08 +00:00
Simon McVittie
edaa6fe253 _dbus_read_credentials_socket: support OpenBSD
OpenBSD SO_PEERCRED is nearly the same as Linux SO_PEERCRED, but the
struct is named differently. Sigh.

Based on a patch from 'ajacoutot'.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32542
2011-01-21 13:27:18 +00:00
Richard A. Hankins
57fab1c219 fix bad DBusMessageIter doc example
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=11190
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-19 16:01:49 +00:00
Lennart Poettering
2bfed4cc54 systemd: ensure that the system bus is unlikely to be killed on OOM 2011-01-18 23:46:15 +01:00
Simon McVittie
16cc54d958 _dbus_listen_tcp_socket: unify cleanup for EADDRINUSE and other failures
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881
2011-01-18 16:07:24 +00:00
Christian Dywan
40b1fc5fff _dbus_listen_tcp_socket: free listen_fd in the error case
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-18 16:00:05 +00:00
Wulf C. Krueger
4e411da35f Fix failure in configure test for abstract sockets
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29895
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 19:49:06 +00:00
Christian Dywan
a144bf4989 clean up credentials on OOM in process_config_first_time_only
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 12:41:15 +00:00
Simon McVittie
a8302efd2c dbus-cleanup-sockets: free list of socket entries
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 12:18:40 +00:00
Simon McVittie
69c0c06e35 remove obviously-redundant code from list_concat_new
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 12:04:09 +00:00
Christian Dywan
0f67e86308 handle failure to register inotify shutdown function
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 12:02:30 +00:00
Christian Dywan
85cb8414ff bus_matchmaker_new: free matchmaker itself, on OOM
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 11:58:26 +00:00
Christian Dywan
6520ecde58 dbus-nonce: check results of _dbus_string_init for OOM
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-17 11:54:08 +00:00
Simon McVittie
84d4ed242a Merge branch 'tmp'
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32854
2011-01-14 15:19:23 +00:00
Simon McVittie
5b6369d783 Remove vestigial support for $INTLLIBS
We no longer call AM_GLIB_GNU_GETTEXT or use gettext directly.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25306
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-01-14 15:18:19 +00:00
Simon McVittie
1be098611e Build dbus.devhelp using doxygen_to_devhelp.xsl and install it
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=13495
2011-01-14 12:46:01 +00:00
Simon McVittie
fbe8c192e2 Install the Doxygen documentation to $(htmldir)
Use ./configure --docdir=/foo (or --htmldir=/foo) to control where it
ends up. For instance, Debian could use:

    --docdir=/usr/share/doc/dbus-1-doc --htmldir='${docdir}/html'

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=13495
2011-01-14 12:45:56 +00:00
Simon McVittie
5277d3c232 docs: use $(MKDIR_P), which we already check for in configure.in
mkdir -p isn't 100% portable, whereas $(MKDIR_P) can either be mkdir -p,
install -d or (as a last resort) ./install-sh -d.
2011-01-14 12:45:54 +00:00
Simon McVittie
b72f6e0ca0 Use a stamp file to represent the Doxygen output
This avoids thinking it's up to date if the Doxygen build fails, but writes
partial output to index.html before failing.
2011-01-14 12:45:52 +00:00
Simon McVittie
5bf055422b Check for xsltproc in configure.in 2011-01-14 12:45:51 +00:00
Simon McVittie
0b7be0d8e3 configure.in: require autoconf 2.60
We already require it in practice, for AC_PROG_MKDIR_P. It also defines
$(htmldir).
2011-01-14 12:45:49 +00:00
Simon McVittie
1edc077257 Add doxygen_to_devhelp.xsl (from Fedora, via Debian)
Originally committed by Matthias Clasen <mclasen@fedoraproject.org>.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=13495
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=454142
2011-01-14 12:45:46 +00:00
Simon McVittie
48086ac56d Generate XML from Doxygen
This is a useful input format for XSLT, for instance to make a Devhelp
index.

Originally from Matthias Clasen in Fedora's dbus/1.0.1-2 package, via
Ubuntu, Debian and Maemo.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=13495
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=454142
2011-01-14 12:45:40 +00:00
Simon McVittie
e870df7b82 Add autolaunch test to .gitignore 2011-01-06 17:35:35 +00:00
Simon McVittie
297919ae61 cmake/cross-compile.sh: use mktemp(1) to avoid a symlink attack in /tmp 2011-01-05 19:10:43 +00:00
Simon McVittie
c71f1e9657 Fix the check for -Wfloat-equal 2011-01-05 19:10:24 +00:00
Simon McVittie
d83d74dc68 configure.in: use AC_TRY_COMPILE to avoid a symlink attack in /tmp during compilation 2011-01-05 19:10:12 +00:00
Christian Dywan
916620ea96 Free session file early in dbus-launch
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-05 14:55:42 +00:00
Christian Dywan
68b1d6ad5f Verify that getsockname succeeded in _dbus_listen_tcp_socket
Bug: https://bugs.freedesktop.org//show_bug.cgi?id=29881
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-05 14:51:03 +00:00
Christian Dywan
14be9f738b Handle failure to allocate error message in _read_subprocess_line_argv
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881
2011-01-05 14:47:12 +00:00
Christian Dywan
79b4e478d7 Check return value of XGetWindowProperty in x11_get_address
Reviewed-by: Thiago Macieira <thiago@kde.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881
2011-01-05 14:42:45 +00:00
Cristian Rodríguez
e2be7b92a6 Annotate dbus_malloc*() functions with __attribute__ malloc and __attribute__ alloc_size
This improves optimization as well catches buffer overflows at compile time.

code like:

foo = dbus_malloc(2);
strcpy(foo, "epicfail");

will emit:

"warning ... will always overflow the destination buffer..."

Signed-off-by: Cristian Rodríguez <cristian.rodriguez@opensuse.org>
Reviewed-by: Thiago Macieira <thiago@kde.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32710
2011-01-05 13:13:48 +00:00
Will Thompson
56d8d4f58e connection: correct HAVE_DECL_MSG_NOSIGNAL guard
Helpfully, AC_CHECK_DECLS (which configure.in uses to define
HAVE_DECL_MSG_NOSIGNAL) behaves differently to every similar AC_CHECK_*
macro and, rather than producing #undef HAVE_DECL_MSG_NOSIGNAL if the
given symbol is not found, instead produces #define
HAVE_DECL_MSG_NOSIGNAL 0.

Mike McQuaid's patch fixes the uses of this constant in sysdeps-unix;
with this patch, all code is guarded consistently and correctly.
2011-01-05 12:08:57 +00:00
Christian Dywan
11b71e901c Fix error condition in _dbus_pipe_close
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32264
Reviewed-by: Colin Walters <walters@verbum.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-04 19:37:19 +00:00
Christian Dywan
7fa27f7d09 Make _dbus_system_logv actually exit with DBUS_SYSTEM_LOG_FATAL
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=32262
Bug-NB: NB#180486
Reviewed-by: Thiago Macieira <thiago@kde.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-01-04 19:27:33 +00:00
Pau Garcia i Quiles
b46b4cf3c4 Windows fix: MSVC 2010 has errno.h. 2010-12-31 16:12:18 +01:00
Marcus Brinkmann
93f98dc3d8 Avoid live lock in Windows (CE) under some situations due to unfair condition variables. 2010-12-29 22:44:27 +01:00
Ralf Habacker
02d973686a Use absolute session service dir path in bus-test on windows. 2010-12-29 14:43:24 +01:00
Ralf Habacker
79026cee36 Keep in sync with autotools. 2010-12-29 14:42:45 +01:00
Mike McQuaid
88004d6b66 sysdeps-unix: use #if for HAVE_DECL_MSG_NOSIGNAL
Signed-off-by: Will Thompson <will.thompson@collabora.co.uk>
2010-12-24 14:34:46 +00:00