Commit graph

368 commits

Author SHA1 Message Date
Havoc Pennington
a37404111b Make BusExpireList an opaque data type
2007-11-08  Havoc Pennington  <hp@redhat.com>

	* 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.
2008-03-04 14:21:42 -05:00
John (J5) Palmieri
6db561dce2 CVE-2008-0595 dbus security policy circumvention
* 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
2008-02-26 13:30:47 -05:00
John (J5) Palmieri
be8750940b fix build against the latest gcc/glibc
* dbus/dbus-sysdeps-unix.c: define _GNU_SOURCE
* bus/selinux.c: include limits.h
* Patch by Matthias Clasen <mclasen at redhat.com>
2008-02-21 13:42:06 -05:00
John (J5) Palmieri
e1821fc35a fix inotify support
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
2008-01-17 14:57:47 -05:00
John (J5) Palmieri
71c2677086 add lsb headers to init script (FDO Bug #11491)
2008-01-15  John (J5) Palmieri  <johnp@redhat.com>

	* bus/messagebus.in: add lsb headers (FDO Bug #11491)
2008-01-15 16:58:36 -05:00
John (J5) Palmieri
4cc2bfa10e check failed allocation (FDO Bug #12920)
2008-01-15  John (J5) Palmieri  <johnp@redhat.com>

	* patch by Kimmo Hämäläinen <kimmo dot hamalainen at nokia dot com>

	* bus/bus.c (setup_server): check failed allocation (FDO Bug #12920)
2008-01-15 15:49:35 -05:00
John (J5) Palmieri
9db435926f 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)
2008-01-15 14:20:43 -05:00
John (J5) Palmieri
f72bb380a6 remove dead code
2008-01-15  John (J5) Palmieri  <johnp@redhat.com>

	* patch by Kimmo Hämäläinen <kimmo dot hamalainen at nokia dot com>

	* bus/config-parser.c (locate_attributes): remove dead code which
	always evaluated to TRUE

	* dbus/dbus-shell.c (_dbus_shell_quote): remove unused code
2008-01-15 13:32:47 -05:00
John (J5) Palmieri
fec58d8d78 plug a possible BusClientPolicy leak (FDO Bug #13242)
2008-01-14  John (J5) Palmieri  <johnp@redhat.com>

	* patch by Kimmo Hämäläinen <kimmo dot hamalainen at nokia dot com>

	* bus/connection.c (bus_connection_complete): plug a possible
	BusClientPolicy leak (FDO Bug #13242)
2008-01-14 19:04:41 -05:00
John (J5) Palmieri
831a0d71c4 add inotify support (FDO Bz#13268)
2008-01-14  John (J5) Palmieri  <johnp@redhat.com>

	* 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)
2008-01-14 19:00:36 -05:00
John (J5) Palmieri
cbf5d0b6fa watch for file creates in dnotify
2008-01-14  John (J5) Palmieri  <johnp@redhat.com>

	* patch by Frederic Crozat <fcrozat at mandriva dot com>

	* bus/dir-watch-dnotify.c (bus_watch_directory): watch for file
	creates also
2008-01-14 18:17:53 -05:00
Havoc Pennington
bef4260ad5 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.
2007-10-31 13:58:28 -04:00
Havoc Pennington
5340b8de0b audit_init() was not declared in header, causing warnings; fix this and namespace it
2007-10-23  Havoc Pennington  <hp@redhat.com>

	* bus/bus.c (bus_context_new): use the new name here

	* bus/selinux.c (bus_selinux_audit_init): rename from audit_init()
	to avoid possible libc conflict, and declare it in .h file to
	avoid a warning
2007-10-23 14:48:52 -04:00
Havoc Pennington
a8e32b6874 add HAVE_SELINUX around call to audit_init() so things build without selinux
2007-10-19  Havoc Pennington  <hp@redhat.com>

	* bus/bus.c (bus_context_new): put audit_init() in HAVE_SELINUX
2007-10-19 17:20:06 -04:00
Havoc Pennington
53f6713976 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
2007-10-19 15:05:27 -04:00
Simon McVittie
9f22c3e1e8 Bring .gitignore files up to date; add *.o, *~ etc. to top-level .gitignore
CVS ignores these automatically, so they weren't in the .cvsignore when Ryan
converted the repository.
2007-10-10 17:38:00 +01:00
John (J5) Palmieri
09aa69e015 fd.o bug #12429 Reverse check to setpcap and only init audit if we were root
* patch by Dan Walsh <dwalsh@redhat.com>
* https://bugs.freedesktop.org/show_bug.cgi?id=12429
* Reverse we_were_root check to setpcap if we were root.  Also only init
  audit if we were root.  So error dbus message will not show up when policy
  reload happens.  dbus -session will no longer try to send audit message,
  only system will.
2007-10-03 17:29:45 -04:00
John (J5) Palmieri
8a92100bbe Correctly implement -fPIC and -fPIE
* For security reasons we want possition independent code for libraries
  and possition independent executable for executables
* before we were just enabling -fPIC
* now we correctly enable -fPIC and -PIE for libdbus and the bus respectively
* propper LD_FLAGS are set for each also
2007-10-03 15:21:57 -04:00
Ryan Lortie
f6ec4a80ab Add argument path matching support. Bug #11066.
2007-09-20  Ryan Lortie  <desrt@desrt.ca>

        * dbus/signals.c (struct DBusMatchRule, bus_match_rule_new,
        bus_match_rule_set_arg, bus_match_rule_parse_arg_match,
        match_rule_matches): Add support for parsing and matching on
        arg0path='/some/path' type rules.

        * dbus/signals.h (bus_match_rule_set_arg): change to take const
        DBusString instead of const char * for the string to match against.

        * dbus/dbus-bus.c: add a quick note to dbus_bus_add_match
        documentation about the path matching.

        * doc/dbus-specification.xml: add a more detailed description of the
        changes here.
2007-09-20 13:04:38 -04:00
Ryan Lortie
d34905d811 migrate from cvs to git (cvs2svn -> git-svnimport).
2007-09-13  Ryan Lortie  <desrt@desrt.ca>

        migrate from cvs to git (cvs2svn -> git-svnimport).

        * HACKING: update release/branch/tag instructions
        * */.cvsignore: rename to .gitignore

        also, clean up tags and branch names to conform to HACKING
2007-09-13 11:13:40 -04:00
Havoc Pennington
163555c7ab 2007-08-17 Havoc Pennington <hp@redhat.com>
* tools/dbus-launch-x11.c (set_address_in_x11): fix from Michael
	Lorenz to use long not int with XChangeProperty format 32

	* dbus/dbus-sysdeps-util-unix.c
	(_dbus_write_pid_to_file_and_pipe): factor this out, and use the
	same code in _dbus_become_daemon (where the parent writes the pid
	file and to the pid pipe) and in bus_context_new (where the daemon
	writes its own pid file and to its own pid pipe)

	* bus/bus.c (bus_context_new): close the pid pipe after we print
	to it. Also, don't write the pid to the pipe twice when we fork,
	someone reported this bug a long time ago.
2007-08-17 16:43:57 +00:00
Havoc Pennington
ae4a158696 2007-07-30 Havoc Pennington <hp@redhat.com>
* bus/activation-helper.c (check_bus_name): don't use
	_dbus_check_valid_bus_name() which is only around with
	--enable-checks, instead use _dbus_validate_bus_name().
	Bug #11766 from Diego <diego@pemas.net>
2007-07-30 16:16:47 +00:00
Havoc Pennington
bdbab12123 2007-07-26 Havoc Pennington <hp@redhat.com>
* bus/config-parser-trivial.c (check_return_values): disable a
	test that hardcoded the bus user's name

	* bus/dispatch.c (bus_dispatch_test_conf): remove the "if
	(!use_launcher)" around the tests, they were only failing because
	we didn't pass through all the expected errors from the helper.

	* bus/activation-exit-codes.h
	(BUS_SPAWN_EXIT_CODE_CHILD_SIGNALED): add a code for child segfaulting
	(BUS_SPAWN_EXIT_CODE_GENERIC_FAILURE): make "1" be a generic
	failure code, so if a third party launch helper were written it
	could just always return 1 on failure.
2007-07-26 23:01:14 +00:00
Daniel P. Berrange
ee71e1ff60 Switch over to using getaddrinfo for TCP clients & servers to enable IPv6 2007-07-25 02:46:52 +00:00
Havoc Pennington
79d3004e26 2007-07-24 Havoc Pennington <hp@redhat.com>
* configure.in: add AM_PROG_CC_C_O to allow per-target CPPFLAGS

	* bus/dispatch.c (bus_dispatch_test_conf): Fix up setting
	TEST_LAUNCH_HELPER_CONFIG to include the full path, and enable
	test shell_fail_service_auto_start when use_launcher==TRUE

	* bus/activation-helper-bin.c (convert_error_to_exit_code): pass
	through the INVALID_ARGS error so the test suite works

	* bus/activation.c (handle_activation_exit_error): return
	DBUS_ERROR_NO_MEMORY if we get BUS_SPAWN_EXIT_CODE_NO_MEMORY

	* dbus/dbus-spawn.c (_dbus_babysitter_get_child_exit_status):
	return only the exit code of the child, not the entire thingy from
	waitpid(), and make the return value indicate whether the child
	exited normally (with a status code)

	* bus/bus.c (process_config_first_time_only): _dbus_strdup works
	on NULL so no need to check
	(process_config_every_time): move servicehelper init here, so we
	reload it on HUP or config file change

	* bus/Makefile.am (install-data-hook): remove comment because
	Emacs make mode seems to be grumpy about it
2007-07-24 22:11:00 +00:00
Richard Hughes
0b5478e49e 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/Makefile.am:
* bus/test-system.c: (die), (check_memleaks), (test_pre_hook),
(test_post_hook), (main):
Add back the test-system.c file - not sure now this got ignored in the
diff. I blame git.
2007-07-24 13:03:31 +00:00
Richard Hughes
c9a0a93733 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/dispatch.c: (check_segfault_service_no_auto_start),
(check_launch_service_file_missing),
(check_launch_service_user_missing),
(check_launch_service_exec_missing),
(check_launch_service_service_missing), (bus_dispatch_test_conf),
(bus_dispatch_test_conf_fail), (bus_dispatch_test):
Add unit tests for system activation. Most are copied from the
session activation tests, but some didn't apply when using a laucher.
2007-07-24 12:39:30 +00:00
Richard Hughes
60e764bc3e 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/activation.c: (bus_activation_activate_service):
If the bus uses a service-laucher, then use the setuid laucher.
2007-07-24 12:36:41 +00:00
Richard Hughes
ea3bdfba10 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/activation.c: (handle_activation_exit_error),
(babysitter_watch_callback):
Map the child exit status integer to a proper dbus error.
2007-07-24 12:22:43 +00:00
Richard Hughes
6ceffb5918 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/bus.c: (process_config_first_time_only),
(process_config_every_time), (bus_context_unref),
(bus_context_get_servicehelper):
* bus/bus.h:
Add the concept of a service-helper and allow it's value to be read.
2007-07-24 12:19:59 +00:00
Richard Hughes
153a2aed60 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/activation.c: (bus_activation_entry_unref),
(update_desktop_file_entry):
Add the concept of, and read the value of user from the desktop file.
The user string is not required unless we are using system activation.
2007-07-24 12:17:39 +00:00
Richard Hughes
74e1b98619 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/activation.c:
* bus/desktop-file.h:
Move the defines into the header file, as we use these in the lauch
helper as well as the desktop file parsing.
2007-07-24 12:14:51 +00:00
Richard Hughes
0a63547d0e 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/.cvsignore:
Add the autogenerated binary files.
2007-07-24 12:12:10 +00:00
Richard Hughes
6dd454681a 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/Makefile.am:
* bus/test.h:
Add the build glue for the lauch helper, and also add the launch-helper
OOM checks into make check. I've probably broken the build, give me 2.
2007-07-24 12:10:58 +00:00
Richard Hughes
5a18659992 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/test-launch-helper.c: (die), (check_memleaks),
(test_post_hook), (bus_activation_helper_oom_test), (main):
Add a test wrapper to allow OOM checks on the launch helper.
2007-07-24 12:03:04 +00:00
Richard Hughes
f4082146e9 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/activation-helper-bin.c: (convert_error_to_exit_code),
(main):
* bus/activation-helper.c: (desktop_file_for_name),
(clear_environment), (check_permissions), (check_service_name),
(get_parameters_for_service), (switch_user),
(exec_for_correct_user), (check_bus_name), (get_correct_parser),
(launch_bus_name), (check_dbus_user), (run_launch_helper):
* bus/activation-helper.h:
Add the initial launch-helper. This is split into a main section and a
binary loader that allows us to lauch the main section in another test
harness to do stuff like OOM testing. No build glue yet.
2007-07-24 12:01:32 +00:00
Richard Hughes
0cb8dd64a9 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/Makefile.am:
* bus/config-parser.c: (bus_config_parser_unref),
(start_busconfig_child), (bus_config_parser_end_element),
(servicehelper_path), (bus_config_parser_content),
(bus_config_parser_finished),
(bus_config_parser_get_servicehelper),
(test_default_session_servicedirs),
(test_default_system_servicedirs), (bus_config_parser_test):
* bus/config-parser.h:
Make the config-parser code use the common config code.
Also add the session and systemdirs stuff, and make the config parser
aware of the servicehelper field.
2007-07-24 11:58:08 +00:00
Richard Hughes
d6fddc64b5 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/system.conf.in:
Add new servicehelper fields to the default system.conf file.
2007-07-24 11:53:35 +00:00
Richard Hughes
21dfdb6349 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/config-parser-trivial.c: (service_dirs_find_dir),
(service_dirs_append_link_unique_or_free), (bus_config_parser_new),
(bus_config_parser_unref), (bus_config_parser_start_element),
(bus_config_parser_end_element), (bus_config_parser_content),
(bus_config_parser_finished), (bus_config_parser_get_user),
(bus_config_parser_get_type), (bus_config_parser_get_service_dirs),
(check_return_values), (do_load), (check_loader_oom_func),
(process_test_valid_subdir), (make_full_path), (check_file_valid),
(bus_config_parser_trivial_test):
* bus/config-parser-trivial.h:
Add a security sensitive stripped down config parser for the setuid
launcher. This file only reads what it needs, and doesn't try to do
anything remotely clever like including external files.
It is not intended to validate the config file; it is expected that
config-parser will do that before the setuid program tries to read it.
2007-07-24 11:50:59 +00:00
Richard Hughes
dd8f96b8af 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/config-parser-common.c:
(bus_config_parser_element_name_to_type),
(bus_config_parser_element_type_to_name):
* bus/config-parser-common.h:
We don't want to run the whole config parser with all it's deps in the
setuid program. We need to implement a stripped down config parser just
for the launcher, and to do so I need some common functions and
defines; add them here.
2007-07-24 11:47:31 +00:00
Richard Hughes
837f60ae77 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/dbus-daemon.1.in:
Add standard_system_servicedirs and servicehelper into the man file
and explain what each does.
2007-07-24 11:41:19 +00:00
Richard Hughes
ee10721fdb 2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/activation-exit-codes.h:
Add defines which specify the output codes of the launch helper.
We have to use exit codes as this is the only way we can return failure
type without going grotty things like redirecting possibly-nonsecure
stderr into the error.
2007-07-24 11:34:40 +00:00
Havoc Pennington
d012387afe 2007-07-13 Havoc Pennington <hp@redhat.com>
* Add indent-tabs-mode: nil to all file headers.
2007-07-14 02:44:01 +00:00
Havoc Pennington
ebb99420e5 add a comment about the match rules limit 2007-06-19 17:23:55 +00:00
Havoc Pennington
54b943432c 2007-06-18 Havoc Pennington <hp@redhat.com>
* doc/dbus-specification.xml: document org.freedesktop.DBus.GetId()

	* bus/driver.c (bus_driver_handle_get_id): implement org.freedesktop.DBus.GetId()

	* bus/bus.c (bus_context_new): generate a unique ID for each bus context

	* dbus/dbus-connection.c (dbus_connection_get_server_id): new function

	* dbus/dbus-bus.c (dbus_bus_get_id): new function

	* dbus/dbus-server.c (dbus_server_get_id): new function
2007-06-18 19:32:51 +00:00
Havoc Pennington
b62633b919 2007-06-15 Havoc Pennington <hp@redhat.com>
* dbus/dbus-sysdeps-unix.c (_dbus_append_session_config_file)
	(_dbus_append_system_config_file): new functions

	* bus/main.c (main): use _dbus_append_system_config_file() and
	_dbus_append_session_config_file()

	* dbus/Makefile.am (INCLUDES): move DBUS_SYSTEM_CONFIG_FILE and
	DBUS_SESSION_CONFIG_FILE into this makefile
2007-06-15 20:10:09 +00:00
Havoc Pennington
43b944a0a6 2007-06-15 Havoc Pennington <hp@redhat.com>
* dbus/dbus-sysdeps.c (_dbus_set_errno_to_zero)
	(_dbus_get_is_errno_nonzero, _dbus_get_is_errno_eintr)
	(_dbus_strerror_from_errno): family of functions to abstract
	errno, though these are somewhat bogus (really we should make our
	socket wrappers not use errno probably - the issue is that any
	usage of errno that isn't socket-related probably is not
	cross-platform, so should either be in a unix-only file that can
	use errno directly, or is a bug - these general errno wrappers
	hide issues of this nature in non-socket code, while
	socket-specific API changes would not since sockets are allowed
	cross-platform)
2007-06-15 19:28:36 +00:00
Havoc Pennington
bfd6be8555 2007-06-14 Havoc Pennington <hp@redhat.com>
* bus/dispatch.c (check_get_connection_unix_process_id): mop up
	getpid() (noticed by Peter KKümmel) and adapt the test to
	expect a "pid unknown" error when running on Windows.
2007-06-14 22:02:10 +00:00
Havoc Pennington
7269764952 2007-06-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-server-socket.c (_dbus_server_listen_socket): support
	all_interfaces=true|false for tcp servers

	* dbus/dbus-sysdeps-unix.c (_dbus_listen_tcp_socket): support
	inaddr_any flag

	* bus/selinux.c: fix some missing includes

	* dbus/dbus-server-socket.c (_dbus_server_listen_socket): allow
	port to simply be omitted in addition to specifying 0
2007-06-13 20:52:58 +00:00
Havoc Pennington
e3d30a0322 2007-06-13 Havoc Pennington <hp@redhat.com>
* configure.ac, bus/selinux.c, dbus/dbus-sysdeps-unix-util.c: add
	libaudit support, no clue what this means really but now we have
	it. Patches from Fedora package.

	* bus/bus.c (bus_context_new): move selinux initialization after
	changing to daemon user, patch from Fedora package

	* dbus/dbus-transport.c (auth_via_unix_user_function): fix a typo
2007-06-13 16:30:43 +00:00