Ray Strode [Tue, 15 Jul 2008 06:07:11 +0000 (02:07 -0400)]
Add some state variables to leak locator code for speed
By keeping track of the end of open blocks in the skip
list, and a blocks position in the skip list we can
prevent a lot of linear looping and speed things up
somewhat.
Fix inverted return value from dbus_connection_read_write()
* dbus/dbus-connection.c (_dbus_connection_read_write_dispatch):
The double negation re no_progress_possible was obviously too
confusing: the path for dispatch = FALSE would return an inverted
status. So make it progress_possible and fix the logic.
Colin Walters [Thu, 5 Jun 2008 21:24:34 +0000 (17:24 -0400)]
Bug 15740: Solaris/ADT auditing support (simon zheng)
* bus/driver.c: Add GetAdtAuditSessionData method
which returns audit data for a connection.
* configure.in: Detect ADT auditing support
* dbus/dbus-auth.c: Read ADT auditing creds.
* dbus/dbus-connection.c: Implement
dbus_connection_get_adt_audit_session_data.
* dbus/dbus-connection.h: Export it.
* dbus/dbus-credentials.c: Add support for
gathering adt_audit_data and retrieving it
via _dbus_credentials_get_adt_audit_data.
* dbus/dbus-credentials.h: Add
DBUS_CREDENTIAL_ADT_AUDIT_DATA_ID.
* dbus/dbus-protocol.h: New error
DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN.
* dbus/dbus-sysdeps.c: Support for reading
audit credentials via ADT API.
* dbus/dbus-transport.c: New function
_dbus_transport_get_adt_audit_session_data
to retrieve credentials.
* dbus/dbus-transport.h: Export it.
Colin Walters [Sat, 31 May 2008 00:41:49 +0000 (20:41 -0400)]
Bug 15635: Hold a reference during read/write dispatch (Scott James Remnant)
* dbus/dbus-connection.c (_dbus_connection_read_write_dispatch):
Reference the D-Bus connection during the function call since we
call other functions that may free the last reference and we
still expect to be able to check the connection after they return
to decide our own return value.
Colin Walters [Sat, 31 May 2008 00:25:36 +0000 (20:25 -0400)]
Bug 15571: Clean up GUID-less connections correctly (Scott James Remnant)
* dbus/dbus-connection.c (connection_forget_shared_unlocked):
Remove shared connections which lack a GUID from the list that
caches those, otherwise references to them will remain after
they have been freed.
* test/name-test/test-privserver-client.c: Update test to
try GUID-less connections too.
Colin Walters [Fri, 30 May 2008 23:58:13 +0000 (19:58 -0400)]
Bug 15570: Reset initialized state on dbus_shutdown (Scott James Remnant)
* dbus/dbus-bus.c (addresses_shutdown_func): Reset initialized back
to FALSE after cleaning up the address list so that it will be
reinitialized again if D-Bus is used after dbus_shutdown()
* test/name-test/test-privserver-client.c: Uncomment part of
test which should now pass.
Colin Walters [Fri, 30 May 2008 21:11:15 +0000 (17:11 -0400)]
Add "PrivServer" test which exercises DBusServer and dbus_shutdown
* test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service.in:
New service file for PrivServer.
* configure.in: Generate it.
* test/name-test/Makefile.am: Build test-privserver and
test-privserver-client.
* test/name-test/test-privserver.c: Use DBusServer to
serve a private connection.
* test/name-test/test-privserver-client.c: Connect
via session bus and get address of private server,
exercise dbus_shutdown().
* test/name-test/run-test.sh: Run it.
Colin Walters [Fri, 30 May 2008 20:53:35 +0000 (16:53 -0400)]
Add noinst convenience test library, add a test-shutdown
* test/Makefile.am: New convenience library
libdbus_testutils_la. Reorder build so that
test/ gets built before test/name-test so
name-test files can depend on it.
* test/name-test/test-shutdown.c: New file,
exercises dbus_shutdown () a bit.
* test/name-test/run-test.sh Run test-shutdown.
* test/test-utils.h: In some cases we already have
DBUS_COMPILATION defined, avoid double definition
warning.
Colin Walters [Fri, 30 May 2008 15:14:46 +0000 (11:14 -0400)]
Bug 15588: Fix typo in #ifdef for userdb cache (Scott James Remnant)
* dbus/dbus-userdb-util.c, dbus/dbus-userdb.c: Correct name of
macro used in #ifdef block to match that defined by configure,
otherwise the userdb cache will never be enabled.
take out trailing comma inside an enum so non gcc compilers don't error out
* tools/dbus-monitor.c: take out the trailing comma in the
ProfileAttributeFlags enum as it isn't in our style guides and causes
some compilers to error out
take out trailing comma inside an enum so non gcc compilers don't error out
* tools/dbus-monitor.c: take out the trailing comma in the
ProfileAttributeFlags enum as it isn't in our style guides and causes
some compilers to error out
* ChangeLog.pre-1-2: rename ChangeLog
* NEWS.pre-1-2: rename NEWS
* Makefile.am: list the pre files in EXTRA_DIST; the pre-1-0 files had not
been added yet so do that too
* Turns out I reversed a patch that was alread committed but the bug had not
been closed. Since the patch was applied before I also reverted the
mention of Jérémie in the AUTHORS list mainly for license book keeping
sanity.
* dbus/dbus-connection.c (dbus_connection_send): add documentation
to describe when to call dbus_connection_flush and
dbus_connection_unref after a call to dbus_connection_send is made
Initial wording by Stanislav Brabec <sbrabec at suse.cz>
(fd.o bug#13558)
* bus/expirelist.c
(do_expiration_with_current_time): calculate correct min wait time
and next interval
(bus_expire_list_add, bus_expire_list_add_link): if the timeout is
disabled when we add an item to the expire list, enable the timeout
(do_expiration_with_current_time): only set timeout if there are
items to expire
Fixes for the inotify configuration file monitor backend.
2008-04-01 Timo Hoenig <thoenig@suse.de>
Patch from Frederic Crozat <fcrozat@mandriva.com>
* bus/dir-watch-inotify.c (bus_watch_directory): Only monitor
IN_CLOSE_WRITE, IN_DELETE, IN_MOVE_TO and IN_MOVE_FROM events. This
way, only atomic changes to configuration file are monitored.
* bus/dir-watch-inotify.c (_handle_inotify_watch): Fix typo in
_dbus_verbose function call
* bus/dir-watch-inotify.c (bus_drop_all_directory_watches): Use
_dbus_strerror instead of perror
Colin Walters [Wed, 26 Mar 2008 14:28:40 +0000 (10:28 -0400)]
Set default exit_on_disconnect after registration
2008-03-26 Colin Walters <walters@verbum.org>
Patch from Scott James Remnant <scott@netsplit.com>
* dbus/dbus-bus.c: Set default exit_on_disconnect after registration with
the bus, not before. This ensures that programs which wish to set
exit_on_disconnect to FALSE will not be terminated if the bus exits
during registration. (FDO Bug #15112)
* bus/connection.c, bus/expirelist.c: Make the BusExpireList
struct opaque, adding accessors for manipulating the list. In this
commit there should be no change in functionality or behavior. The
purpose of this change is to improve encapsulation prior to fixing
some bugs Kimmo Hämäläinen found where the timeout is not properly
updated, since we need to e.g. take some action whenever adding
and removing stuff from the expire list.
add a changelog for Benjamin Reed's git patch (OS X build fixes)
* configure.in: Platform build fixes for Mac OS X
the Darwin linker does not understand the -z option; wrap it in
a check for $with_gnu_ld.
environ is only available at runtime, so you need to make a
reference to _NSGetEnviron instead for symbols to resolve properly.
Benjamin Reed [Mon, 28 Jan 2008 18:25:56 +0000 (13:25 -0500)]
Platform build fixes for Mac OS X
- the Darwin linker does not understand the -z option; wrap it in
a check for $with_gnu_ld.
- environ is only available at runtime, so you need to make a
reference to _NSGetEnviron instead for symbols to resolve properly.
* CVE-2008-0595 - security policy of the type <allow send_interface=
"some.interface.WithMethods"/> work as an implicit allow for
messages sent without an interface bypassing the default deny rules
and potentially allowing restricted methods exported on the bus to be
executed by unauthorized users. This patch fixes the issue.
* bus/policy.c (bus_client_policy_check_can_send,
bus_client_policy_check_can_receive): skip messages without an
interface when evaluating an allow rule, and thus pass it to the
default deny rules
correctly unref connections without guids during shutdown
* dbus/dbus-connection.c (close_connection_on_shutdown): new method
split out from shared_connections_shutdown
(shared_connections_shutdown): shutdown all shared connections
without guids
(_dbus_connection_ref_unlocked): handle OOM when prepending no guid
connections to the shared_connections_no_guid list
* Patch by Kimmo Hämäläinen <kimmo dot hamalainen at nokia dot com>
2008-01-17 Timo Hoenig <thoenig@suse.de>
* fix inotify support
* bus/dir-watch-inotify.c (_handle_inotify_watch): fix reading of the
inotify events. Also, use ssize_t not size_t for 'ret'.
* bus/dir-watch-inotify.c (bus_watch_directory): watch not only for
IN_MODIFY but also for IN_CREATE and IN_DELETE
* bus/dir-watch-inotify.c (bus_drop_all_directory_watches): drop the
inotify watches more elegantly by closing inotify:_fd, set inotify_fd to
-1 after dropping the watches
rewrite selinux error handling to not abort due to a NULL read
2008-01-15 John (J5) Palmieri <johnp@redhat.com>
* bus/bus.c (bus_context_check_security_policy): rewrite selinux error
handling to not abort due to a NULL read and to set the error only if
it is not already set (Based off of FDO Bug #12430)
* patch by Frederic Crozat <fcrozat at mandriva dot com> (FDO Bz#
13268)
* add inotify support
* bus/Makefile.am: add inotify module to the build
* bus/dir-watch-inotify.c: inotify module based off the dnotify and
kqueue modules
* configure.in: add checks and switch for inotify
also add a printout at the end of configure if inotify and kqueue
support is being built in (dnotify already had this)
* configure.in: add warning to output when libxml is selected since
we don't have a libxml maintainer and expat works perfectly fine
for what we need an xml parser for
add _dbus_geteuid to fix EXTERNAL authentication in setuid applications
2008-01-14 John (J5) Palmieri <johnp@redhat.com>
* Patch by Andrea Luzzardi <scox at sig11 dot org>: creates a
_dbus_geteuid function to fix EXTERNAL authentication in setuid
applications
* dbus/dbus-sysdeps-unix.c (_dbus_geteuid): used to get the effective
uid of the running program
(_dbus_credentials_add_from_current_process): use geteuid instead of
getuid
(_dbus_append_user_from_current_process): use geteuid instead of
getuid
* dbus/dbus-sysdeps-util-unix.c (_dbus_change_to_daemon_user): use
geteuid instead of getuid
(_dbus_unix_user_is_at_console): use geteuid instead of getuid
* dbus/dbus-sysdeps-win.c (_dbus_geteuid): add a windows equivilant
that returns DBUS_UID_UNSET
Sjoerd Simons [Fri, 23 Nov 2007 10:31:05 +0000 (11:31 +0100)]
Allow a normal session bus to be reused by applications using autolaunching
2007-11-23 Sjoerd Simons <sjoerd@luon.net>
* tools/dbus-launch.c: let both a normal dbus-launch and an
autolaunched bus save their parameters in X11 if possible. This makes
the autolaunch and non-autolaunch behaviour more similar. With the
exception that on a normal launch there will always be a new session
bus and not being able to save parameters is not fatal. This also
enables to launch programs directly with autolaunch (not very usefull
though).
Havoc Pennington [Wed, 31 Oct 2007 17:58:28 +0000 (13:58 -0400)]
Fix a problem where a nul byte was wrongly introduced into UUIDs, due to _dbus_string_copy_to_buffer weird behavior.
2007-10-31 Havoc Pennington <hp@redhat.com>
* bus/selinux.c (log_audit_callback): rewrite to use
_dbus_string_copy_to_buffer_with_nul()
* dbus/dbus-string.c (_dbus_string_copy_to_buffer): change to NOT
nul-terminate the buffer; fail an assertion if there is not enough
space in the target buffer. This fixes two bugs where
copy_to_buffer was used to copy the binary bytes in a UUID, where
nul termination did not make sense. Bug reported by David Castelow.
(_dbus_string_copy_to_buffer_with_nul): new function that always
nul-terminates the buffer, and fails an assertion if there is not
enough space in the buffer.
Havoc Pennington [Fri, 19 Oct 2007 19:05:27 +0000 (15:05 -0400)]
do not call audit_init() from bus/ directory from files in dbus/
2007-10-19 Havoc Pennington <hp@redhat.com>
* bus/bus.c (bus_context_new): put the audit_init() in here
instead, which I believe ends up being the same as where it was
before, though I'm not sure I understand why it goes here.
* dbus/dbus-sysdeps-util-unix.c (_dbus_change_to_daemon_user):
remove audit_init() from here, this file can't depend on code in
bus/ directory
Simon McVittie [Tue, 16 Oct 2007 09:13:15 +0000 (10:13 +0100)]
configure.in: *Actually* fix detection of i486 atomic ops.
My previous attempt at a fix would always enable them due to wrong quoting.
Patch from Colin Walters <walters@verbum.org>
Simon McVittie [Thu, 11 Oct 2007 09:27:28 +0000 (10:27 +0100)]
Enable Autoconf's AC_C_INLINE to avoid compilation failure with gcc -ansi.
If inline isn't recognised (e.g. on a strict C90 compiler, like gcc -ansi) this
defines it to __inline__, __inline or nothing, whichever works. This is safe,
because we never use inline except in combination with static.