Commit graph

338 commits

Author SHA1 Message Date
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
Havoc Pennington
7be5fd95cd 2007-06-09 Havoc Pennington <hp@redhat.com>
* bus/policy.c (bus_policy_create_client_policy): gracefully
	continue if the connection has no unix user - just don't apply
	any unix user dependent rules.

	* bus/config-parser.c: remove dbus-userdb.h usage

	* bus/bus.c: remove dbus-userdb.h usage

	* dbus/dbus-transport.c (_dbus_transport_get_is_authenticated):
	support Windows user function; also, fix the logic for checking
	auth as root in the default auth code (broken in the previous
	commit)

	* dbus/dbus-connection.c
	(dbus_connection_set_windows_user_function): new function
	(dbus_connection_get_windows_user): new function
2007-06-09 23:41:33 +00:00
Havoc Pennington
2383267226 2007-06-09 Havoc Pennington <hp@redhat.com>
* bus/dispatch.c (check_get_connection_unix_process_id): adapt
	since sysdeps-unix.h stuff isn't included anymore

	* bus/bus.c (bus_context_new): use more abstract functions to
	change user, so they can be no-ops on Windows

	* dbus/dbus-credentials.c, dbus/dbus-credentials.h,
	dbus/dbus-credentials-util.c: new files containing a fully opaque
	DBusCredentials data type to replace the old not opaque one.

	* configure.in (DBUS_UNIX): define DBUS_UNIX to match DBUS_WIN on
	windows

	* dbus/dbus-userdb.h: prohibit on Windows, next step is to clean
	up the uses of it in bus/*.c and factor out the parts of
	cookie auth that depend on it
2007-06-09 21:53:20 +00:00
Ralf Habacker
378053ba59 * bus/main.c (main): uses _dbus_get_config_file_name() to detect session.conf location on win32.
* dbus-sysdeps-win.h (_dbus_get_config_file_name,_dbus_file_exists): new prototyp, undefined interface after including windows.h because  t makes trouble when a paramater is named interface.
* dbus-sysdeps-win.c (_dbus_get_install_root,_dbus_get_config_file_name,_dbus_file_exists):  new functions.
2007-06-01 22:05:42 +00:00
Ralf Habacker
5bd59d4a6c * bus/config-parser.c (test_service_dir_matches): fixed ordering for unix.
* bus/config-parser.c (test_default_session_servicedirs): made allocation  of _progs platform independent.
2007-05-24 08:07:28 +00:00
Havoc Pennington
ae68ad2ab9 2007-05-23 Havoc Pennington <hp@redhat.com>
* bus/Makefile.am (install-data-hook): create session.d

	* bus/session.conf.in: add session.d for the session bus, so
	security policy can be extended
2007-05-23 19:45:56 +00:00
Ralf Habacker
53d9af1117 * bus/policy (bus_policy_create_client_policy): win32 temporary fix until the userdb stuff is ported completly. 2007-05-19 15:26:32 +00:00
Ralf Habacker
e02f8b1c00 * bus\config-parser.c (test_default_session_servicedirs):win32 fix. 2007-05-17 11:47:48 +00:00
Ralf Habacker
cd57ebe33b * bus/config-parser.c, bus/policy.c, bus/policy.h, bus/dbus-daemon.1.in,bus/session.conf.in: added eavesdrop support for replies - patch by olli.salli at collabora.co.uk approved by Havoc Pennington. 2007-03-15 13:27:01 +00:00
Havoc Pennington
9362aac398 2007-03-11 Havoc Pennington <hp@redhat.com>
* tools/dbus-launch.c (do_close_stderr): fix C89 problem and
	formatting problem

	* Mostly fix the DBusPipe mess.
	- put line break after function return types
	- put space before parens
	- do not pass structs around by value
	- don't use dbus_strerror after calling supposedly cross-platform
	api
	- don't name pipe variables "fd"
	- abstract special fd numbers like -1 and 1
2007-03-12 22:52:40 +00:00
Ralf Habacker
47e318a6e1 * bus/bus.c, bus/bus.h, bus/main.c, bus/test.c, dbus/dbus-sysdeps-unix.c, dbus/dbus-sysdeps-util-unix.c, dbus/dbus-sysdeps-util-win.c, bus/dbus-sysdeps-win.c,dbus/dbus-sysdeps.h: renamed _dbus_xxx_pipe to _dbus_pipe_xxx, completed _dbus_pipe support. 2007-03-10 09:10:36 +00:00
Ralf Habacker
f3fd4d60ad * dbus/dbus-sysdeps.h (_dbus_listen_tcp_socket): changed type or port to pointer, because the port is given back.
* dbus/dbus-server-socket.c (_dbus_server_new_for_tcp_socket): implemented returning tcp port. Skipping port parameter and non integer port values in config <listen> statement needs more effort.
* dbus/dbus-sysdeps-unix.c, dbus/dbus-sysdeps-win.c (_dbus_listen_tcp_socket): return the real used tcp port.
* bus/dbus-daemon.1.in: added <listen> tcp examples
2007-03-10 08:04:39 +00:00
Ralf Habacker
ee51364bd7 * bus/bus.c, dbus/dbus-sysdeps-unix.c, dbus/dbus-sysdeps.h: rename pipe related write() function calls to _dbus_write_pipe(). 2007-03-08 20:25:15 +00:00
Ralf Habacker
e24922e4b5 * bus/dispatch.c: disabled segfault test on win32 for now 2007-03-08 08:30:17 +00:00
Ralf Habacker
de9038c984 * bus/activation.c: win32 compile fix.
* test/test-segfault.c: win32 compile fix, rlimit isn't available on win32.
* dbus-win.patch: removed some more patches, they are applied or obsolate
2007-03-07 18:34:01 +00:00
Ralf Habacker
a780c4e834 * bus/activation.c: (bus_activation_activate_service):
fixed call to _dbus_spawn_async_with_babysitter().
2007-03-04 22:09:50 +00:00
Havoc Pennington
aa2f74f551 2007-01-31 Havoc Pennington <hp@redhat.com>
* bus/dbus-daemon.1.in: write a section in the man page on running
	a test daemon for debugging purposes
2007-02-01 22:41:27 +00:00
Havoc Pennington
8d3d8ff557 2007-01-26 Havoc Pennington <hp@redhat.com>
* bus/session.conf.in: override all the default limits with much
	higher limits on the session bus, there is no reason the session
	bus should have low limits

	* bus/config-parser.c (bus_config_parser_new): increase default
	limits so they are less likely to be hit; in particular the max
	replies per connection was way too low
2007-01-26 16:10:26 +00:00
Ray Strode
5d77d1503e 2006-12-19 Ray Strode <rstrode@redhat.com>
* bus/bus.c (process_config_every_time):
	don't overwrite existing bus context activation object
	until after we've checked that the new activation is
	valid.

	* bus/main.c
	(signal_handler), (handle_reload_watch):
	don't call exit() on failure, instead make do and keep
	going.
	(close_reload_pipe): new function to turn off
	hangup-causes-config-reload behavior if an unexpected
	error occurs
2006-12-20 06:18:19 +00:00
Ralf Habacker
f2e17db66f * dbus/dbus-string.c (_dbus_string_pop_line),
bus/desktop-file.c (parse_section_start,
	parse_comment_or_blank,parse_key_value,): uses
	_dbus_string_find_eol() to support platform independent eol style.
2006-12-12 23:58:32 +00:00
Tim Dijkstra
145fb99b6e commit.msg 2006-12-12 21:24:07 +00:00
John (J5) Palmieri
1a90c01930 * bus/signal.c: Fix match_rule_equal errata
(CVE-2006-6107 - Patch from Kimmo Hämäläinen
  <kimmo.hamalainen@nokia.com>)
2006-12-12 19:08:04 +00:00
John (J5) Palmieri
4c31ea9ee2 * bus/bus.c: Missed patch - pass in the context to the directory watch 2006-11-06 16:02:19 +00:00
John (J5) Palmieri
b6f91340c3 * bus/activation.c (bus_activation_new): don't fail if we can not read
the directory as it may not exist
2006-11-03 01:03:43 +00:00
John (J5) Palmieri
a157ec7f72 * bus/config-parser.c (service_dirs_find_dir): use
_dbus_list_get_next_link so we don't get stuck in an infinite loop
  (start_busconfig_child): move processing of standard_session_servicedirs
  tags here because they have no content
  (bus_config_parser_content): check we don't have content in
  standard_session_servicedirs tag

* tools/Makefile.am: Make sure the /var/lib/dbus directory is created
  Packagers need to own this directory
2006-11-02 23:56:48 +00:00
Havoc Pennington
524ddfcb34 2006-11-01 Havoc Pennington <hp@redhat.com>
* bus/dbus-daemon.1.in: document standard_session_servicedirs
2006-11-02 04:26:23 +00:00
John (J5) Palmieri
5640f7a57b * configure.in: expose DBUS_DATADIR
* bus/config-parser.c: add the standard_session_servicedirs element
  to the parser
  (bus_config_parser_content): process the standard_session_servicedirs
  element by getting the standard directories from sysdeps and merging
  them into the service directory list
  (test_default_session_servicedirs): make sure we get what we expect

* bus/session.conf.in: replace the servicedir tag with the
  standard_session_servicedirs tag

* dbus/dbus-list.h: remove the typedef of DBusList and place it in
  dbus-sysdeps.h to avoid circular header dependencies

* dbus/dbus-sysdeps.h: add the typedef of DBusList

* dbus/dbus-sysdeps-unix.c (split_paths_and_append): utility function
  which takes a string of directories delimited by colons, parses them
  out, appends a suffix and puts them in a list ignoring empty elements
  (_dbus_get_standard_session_servicedirs): returns the standard
  directories for a session bus to look for service activation files
  on Unix which includes the XDG_DATA_HOME, XDG_DATA_DIRS and
  DBUS_DATADIR directories

* test/data/valid-config-files/many-rules.conf: add the
  standard_session_servicedirs tag to the valid config file tests
2006-11-01 23:30:46 +00:00
John (J5) Palmieri
feb7d3a0f0 * bus/config-parser.c (service_dirs_find_dir,
service_dirs_append_unique_or_free,
  service_dirs_append_link_unique_or_free): New static methods
  for only appending unique service directory names into
  the service directory list
  (merge_included, bus_config_parser_content): Only add unique
  service directory names into the list
2006-10-27 18:30:22 +00:00
David Zeuthen
cb905b58f0 2006-10-23 David Zeuthen <davidz@redhat.com>
* dbus/dbus-memory.c: Use atomic variable to protect
        n_blocks_outstanding otherwise OOM will be reported using SMP on
        some arches

        * bus/dispatch.c: Add missing end of line characters

        * bus/desktop-file.c (parse_section_start, parse_key_value)
        (bus_desktop_file_load): Propertly handle OOM

        * dbus/dbus-threads.c (init_uninitialized_locks): Check that
        thread_init_generation equals _dbus_current_generation, not 0
2006-10-23 17:25:52 +00:00
John (J5) Palmieri
fe1f793a4f * bus/dir-watch-default.c, bus/dir-watch-dnotify.c,
bus/dir-watch-kqueue.c (bus_watch_directory): Pass in a BusContext
  instead of a void *.  kqueue uses this to get the context's loop
  while the other modules ignore the parameter.  This allows us to
  avoid platform conditionals

* bus/bus.c (process_config_postinit): Pass in the context to the
  watch
2006-10-19 19:43:05 +00:00
John (J5) Palmieri
eb357c5ff9 * bus/messagebus.in, bus/rc.messagebus.in: run dbus-uuidgen --ensure
when starting the system bus
2006-10-19 15:34:47 +00:00