Colin Walters [Tue, 9 Dec 2008 14:15:06 +0000 (09:15 -0500)]
Bug 18229: Allow signals
Our previous fix went too far towards lockdown; many things rely
on signals to work, and there's no really good reason to restrict
which signals can be emitted on the bus because we can't tie
them to a particular sender.
Tomas Hoger [Thu, 4 Dec 2008 20:19:13 +0000 (15:19 -0500)]
Bug 18229 - Change system.conf to correctly deny non-reply sends by default
The previous rule <allow send_requested_reply="true"/> was actually
applied to all messages, even if they weren't a reply. This meant
that in fact the default DBus policy was effectively allow, rather
than deny as claimed.
This fix ensures that the above rule only applies to actual reply
messages. Signed-off-by: Colin Walters <walters@verbum.org>
Artem Bityutskiy [Fri, 29 Aug 2008 14:13:15 +0000 (17:13 +0300)]
Bug 17352: synchronize the file before renaming
Dbus is doing atomic file updates by copying them, changing
the copy, and re-naming them. However, it does not synchronize
the file before re-naming, which results in corruption in
case of unclean reboots. The reason for this is that file-systems
have write-back cache and they postpone writing data to the media.
This patch adds the missed fsync() for the Unix part. I do
not have windows so cannot provide a windows port fix.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: Colin Walters <walters@verbum.org>
Bug 16727: Handle ERANGE for getgr; fixes user in many groups
Patch originally from Noèl Köthe.
Modified by Colin Walters <walters@verbum.org>
* dbus/dbus-sysdeps-unix.c, dbus/dbus-sysdeps-unix-utils.c:
Use a while() loop to reallocate buffer if we get ERANGE
return. This fixes the case where a user is in a large
number of groups.
Bug 16839: Fix bus names in test case so it actually works.
* test/name-test/test-privserver.c (filter_session_message, main),
* test/name-test/test-privserver-client.c (open_shutdown_private_connection):
Replace TestServer with PrivServer to match the service definition files.
Ray Strode [Tue, 15 Jul 2008 08:01:49 +0000 (04:01 -0400)]
Fix leaks in bus_activation_get_environment error paths
Commit 91306ef938873fce8f2ae2d4a6b3282d0379c65a introduced
two memory leaks on OOM error paths. In one case the
environment string array wasn't getting freed, and in the
other case it was getting freed with dbus_free instead of
dbus_free_string_array.
Ray Strode [Fri, 11 Jul 2008 14:27:07 +0000 (10:27 -0400)]
Update man page to make the point of the <type> element more clear
There have been a number of patches in the past try to key system
versus session bus policy off of the message bus type, when the
policy should be distinguished from more fine-grained options in the
individulal policy files. Hopefully, this man page update will make
that more clear.
Ray Strode [Thu, 10 Jul 2008 17:19:44 +0000 (13:19 -0400)]
Add new UpdateActivationEnvironment bus message
It adjusts the environment of activated bus clients.
This is important for session managers that get started
after the session bus daemon and want to influence the
environment of desktop services that are started by the
bus.
Ray Strode [Thu, 10 Jul 2008 18:35:38 +0000 (14:35 -0400)]
Store what environment to activate with on activation object
We now keep the environment in a hash table member of the
activation object and provide a method
bus_activation_set_environment_variable to modify the
hash table. This hash table is seeded initially with the
environment of the bus daemon itself.
Ray Strode [Thu, 10 Jul 2008 17:12:01 +0000 (13:12 -0400)]
When spawning processes, don't ignore the passed in environment
Previously, we'd always call execv() and unconditionally use
the environment of the parent. Now we call execve() with the
passed in environment. For compatibility, we detect if
the passed in environment is NULL and for that case, use the
environment from the parent instead.
Ray Strode [Thu, 10 Jul 2008 16:45:36 +0000 (12:45 -0400)]
Add new _dbus_get_environment call
It's a wrapper around the environ external variable.
It will be important in the future when we allow
bus clients to modify the environment of future
activated clients. Presently, we just always use the
bus daemon environment wholesale.
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