Commit graph

1525 commits

Author SHA1 Message Date
Havoc Pennington
b4a1100f4f 2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-watch.c (_dbus_watch_new): handle failure to malloc
	the watch

	* dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new):
	add some missing dbus_set_result

	* bus/dispatch.c (bus_dispatch_add_connection): handle failure to
	alloc the DBusMessageHandler

	* dbus/dbus-transport.c (_dbus_transport_disconnect): don't ref
	the transport here, since we call this from the finalizer; it
	resulted in a double-finalize.

	* dbus/dbus-transport.c (_dbus_transport_disconnect): fix a bug
	where we tried to use transport->connection that was NULL,
	happened when transport was disconnected early on due to OOM

	* bus/*.c: adapt to handle OOM for watches/timeouts

	* dbus/dbus-transport-unix.c: port to handle OOM during
	watch handling

	* dbus/dbus-auth.c (_dbus_auth_get_unused_bytes): return a
	reference to unused bytes instead of a copy

	* dbus/dbus-server.c (dbus_server_handle_watch): return FALSE for
	out of memory

	* dbus/dbus-connection.c (dbus_connection_handle_watch): return
	FALSE on OOM

	* dbus/dbus-timeout.c (dbus_timeout_handle): return FALSE for out
	of memory
2003-03-17 01:54:37 +00:00
Anders Carlsson
3caaa342e8 2003-03-16 Anders Carlsson <andersca@codefactory.se>
* doc/dbus-specification.sgml:
	Document reply message for ActivateService.
2003-03-16 22:29:14 +00:00
Anders Carlsson
3f4086f0fd 2003-03-16 Anders Carlsson <andersca@codefactory.se>
* bus/activation.c: (bus_pending_activation_entry_free),
	(bus_pending_activation_free), (bus_activation_new),
	(bus_activation_unref), (bus_activation_service_created),
	(bus_activation_activate_service):
	* bus/activation.h:
	* bus/bus.c: (bus_context_new):
	* bus/desktop-file.c: (new_section):
	* bus/driver.c: (bus_driver_send_service_deleted),
	(bus_driver_handle_activate_service):
	* bus/services.c: (bus_registry_new), (bus_registry_ensure):
	* bus/services.h:
	* dbus/dbus-connection.c:
	(dbus_connection_send_with_reply_and_block):
	* dbus/dbus-message.c: (dbus_message_append_args_valist):
	* dbus/dbus-protocol.h:
	Make activation work better. Now pending activations will be queued
	and the daemon won't try to activate services that are already registered.
2003-03-16 22:25:18 +00:00
Havoc Pennington
d1f65c6c4f 2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-bus.c (ensure_bus_data): handle failure to set
	connection data

	* dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
	DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
2003-03-16 21:01:57 +00:00
Havoc Pennington
ebb57e719c 2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-string.c (_dbus_string_validate_utf8): oops, unbreak
	this. always run the test suite before commit...

	* bus/*: adapt to DBusConnection API changes

	* glib/dbus-gmain.c: adapt to DBusConnection API changes,
	requires renaming stuff to avoid dbus_connection_dispatch name
	conflict.

	* dbus/dbus-transport.c (_dbus_transport_queue_messages): new
	function

	* dbus/dbus-message.c (_dbus_message_loader_queue_messages):
	separate from _dbus_message_loader_return_buffer()

	* dbus/dbus-connection.c (dbus_connection_get_n_messages): remove
	this, because it's now always broken to use; the number of
	messages in queue vs. the number still buffered by the message
	loader is undefined/meaningless. Should use
	dbus_connection_get_dispatch_state().
	(dbus_connection_dispatch): rename from
	dbus_connection_dispatch_message
2003-03-16 20:16:47 +00:00
Havoc Pennington
021305e568 2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-string.c (_dbus_string_validate_utf8): copy in a real
	implementation
2003-03-16 17:47:04 +00:00
Anders Carlsson
e537e421ff 2003-03-16 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-connection.c:
	(dbus_connection_send_with_reply_and_block):
	Decrease connection->n_incoming when removing an entry
	from the list.
	* dbus/dbus-dict.c: (dbus_dict_entry_free),
	(dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
	(dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
	(dbus_dict_set_byte_array), (dbus_dict_set_string_array),
	(dbus_dict_get_boolean_array), (dbus_dict_get_double_array),
	(dbus_dict_get_byte_array):
	Handle NULL arrays and strings. Also add support for byte arrays.

	* dbus/dbus-marshal.c: (_dbus_marshal_byte_array),
	(_dbus_marshal_dict), (_dbus_demarshal_byte_array),
	(_dbus_demarshal_int32_array), (_dbus_demarshal_uint32_array),
	(_dbus_demarshal_double_array), (_dbus_demarshal_string_array),
	(_dbus_demarshal_dict), (demarshal_and_validate_len),
	(_dbus_marshal_validate_arg), (_dbus_marshal_test):
	* dbus/dbus-marshal.h:
	Add support for marshalling and demarshalling empty arrays and strings.

	* dbus/dbus-message.c: (dbus_message_append_args_valist),
	(dbus_message_append_string_array),
	(dbus_message_iter_get_boolean),
	(dbus_message_iter_get_boolean_array),
	(dbus_message_iter_get_int32_array),
	(dbus_message_iter_get_uint32_array),
	(dbus_message_iter_get_double_array),
	(dbus_message_iter_get_byte_array),
	(dbus_message_iter_get_string_array), (dbus_message_iter_get_dict),
	(check_message_handling):
	Add support for getting empty arrays and dicts.

	* dbus/dbus-string.c: (_dbus_string_validate_utf8):
	Don't do any validation at all for now, that's better than just checking
	for ASCII.

	* test/data/valid-messages/emptiness.message:
	New test message with lots of empty arrays.
2003-03-16 13:32:10 +00:00
Havoc Pennington
5c53fb2a36 2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-connection.c
	(_dbus_connection_queue_received_message_link): new function that
	can't fail due to OOM

	* dbus/dbus-message.c (_dbus_message_loader_pop_message_link):
	new function pops a message together with a list link
	containing it.

	* dbus/dbus-transport-unix.c (queue_messages): use new link-based
	message queuing functions to avoid needing to alloc memory
2003-03-16 08:31:00 +00:00
Havoc Pennington
ce173b29fc 2003-03-16 Havoc Pennington <hp@pobox.com>
Oops - test code was only testing failure of around 30 of the
	mallocs in the test path, but it turns out there are 500+
	mallocs. I believe this was due to misguided linking setup such
	that there was one copy of dbus_malloc etc. in the daemon and one
	in the shared lib, and only daemon mallocs were tested. In any
	case, the test case now tests all 500+ mallocs, and doesn't pass
	yet, though there are lots of fixes in this patch.

	* dbus/dbus-connection.c (dbus_connection_dispatch_message): fix
	this so that it doesn't need to allocate memory, since it
	has no way of indicating failure due to OOM (and would be
	annoying if it did).

	* dbus/dbus-list.c (_dbus_list_pop_first_link): new function

	* bus/Makefile.am: rearrange to create two self-contained
	libraries, to avoid having libraries with overlapping symbols.
	that was resulting in weirdness, e.g. I'm pretty sure there
	were two copies of global static variables.

	* dbus/dbus-internals.c: move the malloc debug stuff to
	dbus-memory.c

	* dbus/dbus-list.c (free_link): free list mempool if it becomes
	empty.

	* dbus/dbus-memory.c (_dbus_disable_mem_pools): new function

	* dbus/dbus-address.c (dbus_parse_address): free list nodes
	on failure.

	* bus/dispatch.c (bus_dispatch_add_connection): free
	message_handler_slot when no longer using it, so
	memory leak checkers are happy for the test suite.

	* dbus/dbus-server-debug-pipe.c (debug_finalize): free server name

	* bus/bus.c (new_connection_callback): disconnect in here if
	bus_connections_setup_connection fails.

	* bus/connection.c (bus_connections_unref): fix to free the
	connections
	(bus_connections_setup_connection): if this fails, don't
	disconnect the connection, just be sure there are no side
	effects.

	* dbus/dbus-string.c (undo_alignment): unbreak this

	* dbus/dbus-auth.c (_dbus_auth_unref): free some stuff we were
	leaking
	(_dbus_auth_new): fix the order in which we free strings
	on OOM failure

	* bus/connection.c (bus_connection_disconnected): fix to
	not send ServiceDeleted multiple times in case of memory
	allocation failure

	* dbus/dbus-bus.c (dbus_bus_get_base_service): new function to
	get the base service name
	(dbus_bus_register_client): don't return base service name,
	instead store it on the DBusConnection and have an accessor
	function for it.
	(dbus_bus_register_client): rename dbus_bus_register()

	* bus/dispatch.c (check_hello_message): verify that other
	connections on the bus also got the correct results, not
	just the one sending hello
2003-03-16 08:08:21 +00:00
Havoc Pennington
f587ce7845 2003-03-15 Havoc Pennington <hp@pobox.com>
Make it pass the Hello handling test including all OOM codepaths.
	Now to do other messages...

	* bus/services.c (bus_service_remove_owner): fix crash when
	removing owner from an empty list of owners
	(bus_registry_ensure): don't leave service in the list of
	a connection's owned services if we fail to put the service
	in the hash table.

	* bus/connection.c (bus_connection_preallocate_oom_error): set
	error flag on the OOM error.

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport):
	handle _dbus_transport_set_connection failure

	* dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): modify
	to create watches up front and simply enable/disable them as
	needed.
	(unix_connection_set): this can now fail on OOM

	* dbus/dbus-timeout.c, dbus/dbus-watch.c: add concept
	of enabling/disabling a watch or timeout.

	* bus/loop.c (bus_loop_iterate): don't touch disabled
	watches/timeouts

	* glib/dbus-gmain.c: adapt to enable/disable watches and timeouts
2003-03-15 20:47:16 +00:00
Havoc Pennington
f05f87a825 2003-03-15 Havoc Pennington <hp@pobox.com>
* bus/dispatch.c (bus_dispatch_test): OK, now finally actually
	write useful test code, after all that futzing around ;-)

	Test does not yet pass because we can't handle OOM in
	_dbus_transport_messages_pending (basically,
	dbus_connection_preallocate_send() does not prealloc the write
	watch). To fix this, I think we need to add new stuff to
	set_watch_functions, namely a SetEnabled function so we can alloc
	the watch earlier, then enable it later.

	* dbus/Makefile.am (libdbus_convenience_la_SOURCES): move
	dbus-memory.c to the convenience lib

	* bus/test.c: rename some static functions to keep them clearly
	distinct from stuff in connection.c. Handle client disconnection.
2003-03-15 06:00:01 +00:00
Havoc Pennington
169238e99a 2003-03-14 Havoc Pennington <hp@pobox.com>
* bus/dispatch.c (bus_dispatch_test): do test using debug-pipe
	transport, tests more of the real codepath. Set up clients
	with bus_setup_debug_client.

	* bus/test.c (bus_setup_debug_client): function to set up debug
	"clients" on the main loop

	* dbus/dbus-transport.c (_dbus_transport_open): add debug-pipe
	support

	* dbus/dbus-server.c (dbus_server_listen): add debug-pipe
	server type

	* dbus/dbus-server-debug.c: support a debug server based on pipes

	* dbus/dbus-sysdeps.c (_dbus_full_duplex_pipe): new function
	(_dbus_close): new function

	* configure.in: check for socketpair
2003-03-15 04:25:09 +00:00
Havoc Pennington
4c95a9782c 2003-03-14 Havoc Pennington <hp@redhat.com>
* dbus/dbus-memory.c: add a "detect buffer overwrites on free"
	cheesy hack

	* dbus/dbus-transport-debug.c: rework this a good bit to be
	less complicated. hopefully still works.

	* dbus/dbus-server-debug.c (handle_new_client): remove timeout
	manually

	* glib/dbus-gmain.c (timeout_handler): don't remove timeout
	after running it

	* dbus/dbus-message.c (dbus_message_copy): rename from
	dbus_message_new_from_message, fix it up to copy
	all the message fields, add test case

	* bus/dispatch.c (bus_dispatch_test): add some more test code,
	not quite passing yet
2003-03-15 02:19:02 +00:00
Havoc Pennington
f468907fb0 2003-03-14 Havoc Pennington <hp@pobox.com>
* bus/loop.c (bus_loop_iterate): add this so we can "run loop
	until no work remains" in test code. (the large diff here
	is just code movement, no actual changes)

	* dbus/dbus-server-debug.c (DEFAULT_INTERVAL): change interval to
	1, no point waiting around for test code.
	(_dbus_server_debug_accept_transport): unref the timeout
	after adding it (right?)

	* dbus/dbus-transport-debug.c (DEFAULT_INTERVAL): ditto
2003-03-14 05:17:19 +00:00
Havoc Pennington
3bea935316 2003-03-13 Havoc Pennington <hp@redhat.com>
* dbus/dbus-timeout.c (_dbus_timeout_list_set_functions): handle
	out of memory

	* dbus/dbus-watch.c (_dbus_watch_list_set_functions): handle out
	of memory

	* dbus/dbus-connection.h: Make AddWatchFunction and
	AddTimeoutFunction return a bool so they can fail on out-of-memory

	* bus/bus.c (bus_context_new): set up timeout handlers

	* bus/connection.c (bus_connections_setup_connection): set up
	timeout handlers

	* glib/dbus-gmain.c: adapt to the fact that set_functions stuff
	can fail

	* bus/bus.c (bus_context_new): adapt to changes

	* bus/connection.c: adapt to changes

	* test/watch.c: adapt to DBusWatch changes

	* bus/dispatch.c (bus_dispatch_test): started adding this but
	didn't finish
2003-03-14 01:27:58 +00:00
Anders Carlsson
81c30364c2 2003-03-14 Anders Carlsson <andersca@codefactory.se>
* bus/dispatch.c (send_service_nonexistent_error): Fix typo.
2003-03-14 00:59:12 +00:00
Havoc Pennington
d65b73884c 2003-03-13 Havoc Pennington <hp@pobox.com>
* bus/test.c, bus/test.h, bus/Makefile.am, bus/test-main.c:
	set up a test framework as for the library
2003-03-13 06:18:06 +00:00
Havoc Pennington
6ecc14ffab 2003-03-12 Havoc Pennington <hp@pobox.com>
Throughout: purge global variables, introduce BusActivation,
	BusConnections, BusRegistry, etc. objects instead.

	* bus/bus.h, bus/bus.c: introduce BusContext as a global
	message bus object

	* test/Makefile.am (TEST_BINARIES): disable bus-test for now,
	going to redo this a bit differently I think
2003-03-13 03:52:58 +00:00
Havoc Pennington
29560adcc7 2003-03-12 Havoc Pennington <hp@redhat.com>
Mega-patch that gets the message bus daemon initially handling
	out-of-memory. Work still needed. Also lots of random
	moving stuff to DBusError instead of ResultCode.

	* dbus/dbus-list.c (_dbus_list_length_is_one): new function

	* dbus/dbus-connection.c
	(dbus_connection_send_with_reply_and_block): use DBusError

	* dbus/dbus-bus.c: adapt to API changes, make it use DBusError not
	DBusResultCode

	* dbus/dbus-connection.c (dbus_connection_send): drop the result
	code here, as the only failure possible is OOM.

	* bus/connection.c (bus_connection_disconnect):
	rename bus_connection_disconnected as it's a notification only

	* bus/driver.c (bus_driver_handle_acquire_service): don't free
	"name" on get_args failure, should be done by get_args;
	don't disconnect client for bad args, just return an error.
	(bus_driver_handle_service_exists): ditto

	* bus/services.c (bus_services_list): NULL-terminate returned array

	* bus/driver.c (bus_driver_send_service_lost)
	(bus_driver_send_service_acquired): send messages from driver to a
	specific client to the client's unique name, not to the broadcast
	service.

	* dbus/dbus-message.c (decode_header_data): reject messages that
	contain no name field
	(_dbus_message_get_client_serial): rename to
	dbus_message_get_serial and make public
	(_dbus_message_set_serial): rename from set_client_serial
	(_dbus_message_set_reply_serial): make public
	(_dbus_message_get_reply_serial): make public

	* bus/connection.c (bus_connection_foreach): allow stopping
	iteration by returning FALSE from foreach function.

	* dbus/dbus-connection.c (dbus_connection_send_preallocated)
	(dbus_connection_free_preallocated_send)
	(dbus_connection_preallocate_send): new API for sending a message
	without possibility of malloc failure.
	(dbus_connection_send_message): rename to just
	dbus_connection_send (and same for whole function family)

	* dbus/dbus-errors.c (dbus_error_free): make this reinit the error

	* dbus/dbus-sysdeps.c (_dbus_exit): new function

	* bus/activation.c: handle/return errors

	* dbus/dbus-errors.h: add more DBUS_ERROR #define

	* dbus/dbus-sysdeps.c (_dbus_directory_open) (_dbus_file_get_contents)
	(_dbus_directory_get_next_file): use DBusError instead of DBusResultCode
	(_dbus_result_from_errno): move to this file
2003-03-13 00:56:43 +00:00
Anders Carlsson
799a3ff443 2003-03-10 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-marshal.c:
	(_dbus_marshal_set_string):
	Take a length argument so we can marshal the correct string
	length.

	(_dbus_marshal_dict), (_dbus_demarshal_dict),
	(_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg),
	(_dbus_marshal_test):
	* dbus/dbus-marshal.h:
	Add support for marshalling and demarshalling dicts.

	* dbus/dbus-message-builder.c: (_dbus_message_data_load):
	Add support for TYPE DICT.

	* dbus/dbus-message.c: (set_string_field):
	Adjust header padding.

	(dbus_message_append_args_valist), (dbus_message_append_dict),
	(dbus_message_get_args_valist), (dbus_message_iter_get_arg_type),
	(dbus_message_iter_get_dict), (_dbus_message_loader_return_buffer),
	(check_message_handling), (check_have_valid_message):
	* dbus/dbus-message.h:
	Add functions for setting and getting dicts.

	* dbus/dbus-protocol.h:
	Add DBUS_TYPE_DICT.

	* dbus/dbus.h:
	Add dbus-dict.h

	* doc/dbus-specification.sgml:
	Add information about how dicts are marshalled.

	* test/data/invalid-messages/dict-with-nil-value.message:
	* test/data/invalid-messages/too-short-dict.message:
	* test/data/valid-messages/dict-simple.message:
	* test/data/valid-messages/dict.message:
	Add sample messages containing dicts.
2003-03-10 00:13:55 +00:00
Anders Carlsson
1458fb145f 2003-03-08 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-dict.h: Add DBUS_END_DECLS.
2003-03-08 10:34:58 +00:00
Anders Carlsson
546a0ce684 2003-03-07 Anders Carlsson <andersca@codefactory.se>
* dbus/Makefile.am:
	* dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
	(dbus_dict_get_keys), (insert_entry), (dbus_dict_set_boolean),
	(dbus_dict_set_int32), (dbus_dict_set_uint32),
	(dbus_dict_set_double), (dbus_dict_set_string),
	(dbus_dict_set_boolean_array), (dbus_dict_set_int32_array),
	(dbus_dict_set_uint32_array), (dbus_dict_set_double_array),
	(dbus_dict_set_string_array), (_dbus_dict_test):
	* dbus/dbus-dict.h:
	Fix according to comments from Havoc.
2003-03-07 13:39:07 +00:00
Michael Meeks
51b46d7133 2003-03-06 Michael Meeks <michael@server.home>
* configure.in: if we don't have kde-config, disable have_qt.
2003-03-07 10:08:56 +00:00
Anders Carlsson
ee09dbf058 2003-03-07 Anders Carlsson <andersca@codefactory.se>
* dbus/Makefile.am:
	Add dbus-dict.[ch]

	* dbus/dbus-dict.c: (dbus_dict_entry_free), (dbus_dict_new),
	(dbus_dict_ref), (dbus_dict_unref), (dbus_dict_contains),
	(dbus_dict_remove), (dbus_dict_get_value_type),
	(dbus_dict_get_keys), (dbus_dict_put_boolean),
	(dbus_dict_put_int32), (dbus_dict_put_uint32),
	(dbus_dict_put_double), (dbus_dict_put_string),
	(dbus_dict_put_boolean_array), (dbus_dict_put_int32_array),
	(dbus_dict_put_uint32_array), (dbus_dict_put_double_array),
	(dbus_dict_put_string_array), (dbus_dict_get_boolean),
	(dbus_dict_get_int32), (dbus_dict_get_uint32),
	(dbus_dict_get_double), (dbus_dict_get_string),
	(dbus_dict_get_boolean_array), (dbus_dict_get_int32_array),
	(dbus_dict_get_uint32_array), (dbus_dict_get_double_array),
	(dbus_dict_get_string_array), (_dbus_dict_test):
	* dbus/dbus-dict.h:
	Add DBusDict implementation

	* dbus/dbus-test.c: (dbus_internal_do_not_use_run_tests):
	* dbus/dbus-test.h:
	Add _dbus_dict_test.
2003-03-06 23:11:49 +00:00
Havoc Pennington
7e050c8871 2003-03-04 Havoc Pennington <hp@pobox.com>
* test/data/auth/*: adapt to changes

	* dbus/dbus-auth-script.c (_dbus_auth_script_run): add
	USERID_BASE64 and change USERNAME_BASE64 to put in username not
	userid

	* dbus/dbus-keyring.c (_dbus_keyring_validate_context): prevent
	more stuff from being in a context name, to make the protocol
	simpler to deal with

	* dbus/dbus-errors.c (dbus_error_has_name): new function
	(dbus_error_is_set): new function

	* dbus/dbus-auth.c: replace DBUS_STUPID_TEST_MECH auth
	with DBUS_COOKIE_SHA1, implement DBUS_COOKIE_SHA1

	* dbus/dbus-connection.c (dbus_connection_flush): also read
	messages during a flush operation

	* dbus/Makefile.am: remove dbus-md5 since it isn't currently used.
2003-03-05 02:01:34 +00:00
Anders Carlsson
6bea42d2b8 2003-03-05 Anders Carlsson <andersca@codefactory.se>
* configure.in: Check for gethostbyname on Solaris.
2003-03-04 23:47:48 +00:00
Anders Carlsson
942a69b1cd 2003-03-05 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-transport.c: (_dbus_transport_open):
	Remove duplicate "tcp" entry.

	* doc/dbus-specification.sgml:
	Clarify some things.
2003-03-04 23:02:40 +00:00
Anders Carlsson
25d00e5bad 2003-03-05 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-auth.c: (send_rejected), (process_test_subdir):
	* dbus/dbus-keyring.c: (_dbus_keyring_new_homedir),
	(_dbus_keyring_test):
	* dbus/dbus-md5.c: (_dbus_md5_compute):
	* dbus/dbus-sha.c: (_dbus_sha_compute):
	Plug memory leaks.
2003-03-04 23:00:19 +00:00
Anders Carlsson
d80c84a3dd 2003-03-05 Anders Carlsson <andersca@codefactory.se>
* README: Add some things.
2003-03-04 22:53:20 +00:00
Anders Carlsson
6509258f0f 2003-03-04 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-message.c (dbus_message_append_args_valist): Add a break;
	after case DBUS_TYPE_BOOELAN.
2003-03-04 16:59:44 +00:00
Joe Shaw
3c92df88fe fix email address 2003-03-02 20:45:50 +00:00
Havoc Pennington
f7d96bdf80 2003-03-02 Havoc Pennington <hp@pobox.com>
* test/break-loader.c (randomly_set_extreme_ints): add test that
	sets really huge and small integers

	* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): add check
	that length of boolean array fits in the string, and that
	string has room for boolean value in single-bool case.

	* dbus/dbus-message-builder.c (_dbus_message_data_load): add
	optional value to "ALIGN" command which is what to fill the
	alignment with.

	* test/data/valid-messages/no-padding.message: add regression
	test for the message padding problem
2003-03-02 17:34:30 +00:00
Havoc Pennington
7584a7bdcc 2003-03-02 Havoc Pennington <hp@pobox.com>
* dbus/dbus-message.c (decode_header_data): fix to always init
	message_padding, from Benjamin Dauvergne
2003-03-02 16:26:15 +00:00
Havoc Pennington
108f662ad2 2003-03-02 Havoc Pennington <hp@pobox.com>
* configure.in: 0.5

	* NEWS: Update.
2003-03-02 05:58:08 +00:00
Joe Shaw
e0db9aa1f9 2003-03-01 Joe Shaw <joe@ximian.com>
* configure.in: Check for "struct cmsgcred" and try to access its
	members for BSD-like unices.

	* dbus/dbus-sysdeps.c (read_credentials_byte): Fold this back into
	_dbus_read_credentials_unix_socket().
	(_dbus_read_credentials_unix_socket): Use recvmsg() instead of
	read() for reading the credential byte off the unix socket.  Use
	struct cmsgcred on systems that support it.
2003-03-01 20:50:18 +00:00
Alexander Larsson
83087f783b 2003-02-27 Alexander Larsson <alexl@redhat.com>
* glib/Makefile.am:
	* configure.in:
	Make gthreads-2.0 dependency optional. Don't build thread test if
	its not found.
2003-02-27 14:22:36 +00:00
Havoc Pennington
ff190005e5 2003-02-27 Havoc Pennington <hp@pobox.com>
* dbus/dbus-connection.c
	(dbus_connection_send_message_with_reply_and_block): fix doh!
	doh! doh! bug that resulted in never removing a reply from the
	queue, no wonder we called get_reply_serial so much ;-)

	* dbus/dbus-message.c (struct DBusMessage): cache reply serial
	and client serial instead of demarshaling them every time
2003-02-27 05:12:39 +00:00
Havoc Pennington
13f70ce711 2003-02-27 Havoc Pennington <hp@pobox.com>
* dbus/dbus-marshal.c (_dbus_demarshal_int32): rewrite to be much
	more inlined, using dbus-string-private.h, speeds things up
	substantially

	* dbus/dbus-string.c (_dbus_string_free): apply align offset
	when freeing the string
	(_dbus_string_steal_data): fix for align offset
	(undo_alignment): new function
2003-02-27 04:17:44 +00:00
Havoc Pennington
b7bc5ba7a3 2003-02-26 Havoc Pennington <hp@redhat.com>
All kinds of audit fixes from Owen, plus initial attempt to
	handle unaligned memory returned from malloc.

	* dbus/dbus-string.c (_dbus_string_init): clamp max length to
	leave room for align_offset and nul byte
	(fixup_alignment): function to track an align_offset and
	ensure real->str is aligned
	(DBUS_GENERIC_STRING_PREAMBLE): len must be less than allocated,
	to allow a nul byte plus align offset
	(_dbus_string_lock): fix overflow issue
	(_dbus_string_init_const_len): add assertions on sanity of len,
	assign allocated to be ALLOCATION_PADDING larger than len
	(set_length): fixup the overflow handling
	(_dbus_string_get_data_len): fix overflow in assertion
	(open_gap): detect overflow in size of gap to be opened
	(_dbus_string_lengthen): add overflow check
	(_dbus_string_align_length): fix overflow with _DBUS_ALIGN_VALUE
	(_dbus_string_append): add overflow check
	(_dbus_string_append_unichar): overflow
	(_dbus_string_delete): fix overflow in assertion
	(_dbus_string_copy_len): overflow in assertion
	(_dbus_string_replace_len): overflows in assertions
	(_dbus_string_find): change to implement in terms of
	_dbus_string_find_to
	(_dbus_string_find_to): assorted fixage
	(_dbus_string_equal_c_str): assert c_str != NULL,
	fix logic so the function works
	(_dbus_string_ends_with_c_str): fix overflow thingy
	(_dbus_string_base64_encode): overflow fix
	(_dbus_string_validate_ascii): overflow
	(_dbus_string_validate_nul): overflow
2003-02-26 22:08:19 +00:00
Havoc Pennington
8d1eba0f41 2003-02-26 Havoc Pennington <hp@redhat.com>
* dbus/dbus-marshal.c (_dbus_marshal_test): fix to work with DISABLE_ASSERTS
2003-02-26 18:26:13 +00:00
Alexander Larsson
89e6dfd29c 2003-02-26 Alexander Larsson <alexl@redhat.com>
* configure.in:
	Set DBUS_GLIB_THREADS_LIBS for apps using gthread-2.0

	* dbus/dbus-connection.c:
	* dbus/dbus-connection.h:
	Fix _dbus_connection_acquire_io_path and _dbus_connection_acquire_dispatch.
	Add dbus_connection_set_wakeup_main_function and use it when queueing
	incoming and outgoing messages.


	* dbus/dbus-dataslot.c:
	Threadsafe usage of DBusDataSlotAllocator

	* dbus/dbus-message.c: (dbus_message_get_args_iter):
	dbus_new can fail.

	* dbus/dbus-server-unix.c:
	Add todo comment

	* glib/dbus-gmain.c:
	Implement the new wakeup functions for glib.

	* glib/Makefile.am:
	* glib/test-thread-client.c:
	* glib/test-thread-server.c:
	* glib/test-thread.h:
	Initial cut at some thread test code. Not really done yet.
2003-02-26 15:52:25 +00:00
Havoc Pennington
7265423411 2003-02-26 Havoc Pennington <hp@pobox.com>
* dbus/dbus-connection.c
	(dbus_connection_send_message_with_reply_and_block): fix crash
	where we ref'd the outgoing message instead of the returned reply

	* dbus/dbus-transport-unix.c (do_authentication): check read watch
	at the end of this function, so if we didn't need to read for
	authentication, we reinstall it for receiving messages

	* dbus/dbus-message.c (dbus_message_new_reply): allow replies to
	a NULL sender for peer-to-peer case

	* dbus/dbus-transport-unix.c (check_read_watch): handle
	!authenticated case correctly

	* glib/dbus-gmain.c: add support for DBusServer

	* dbus/dbus-server.c: add data slot support

	* glib/dbus-gmain.c (dbus_connection_setup_with_g_main): check
	return values and handle errors

	* dbus/dbus-dataslot.c: factor out the data slot stuff from
	DBusConnection

	* Doxyfile.in (INPUT): add glib subdir

	* glib/dbus-gmain.c (dbus_connection_setup_with_g_main): rename
	setup_with_g_main instead of hookup_with_g_main; write docs
2003-02-26 06:42:57 +00:00
Anders Carlsson
3781f063a6 2003-02-24 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-marshal.c: (_dbus_marshal_validate_arg):
	* dbus/dbus-message-builder.c: (_dbus_message_data_load):
	* dbus/dbus-message.c: (dbus_message_append_boolean),
	(dbus_message_append_boolean_array),
	(dbus_message_get_args_valist), (_dbus_message_test):
	* dbus/dbus-message.h:
	* doc/dbus-specification.sgml:
	Various fixes as pointed out by Havoc.

	* test/data/invalid-messages/bad-boolean-array.message:
	* test/data/invalid-messages/bad-boolean.message:
	Add invalid boolean value test cases.
2003-02-24 20:26:13 +00:00
Anders Carlsson
c96500c37f Fix changelog 2003-02-24 19:17:48 +00:00
Anders Carlsson
c8769e0b1d 2003-02-24 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-internals.c: (_dbus_type_to_string):
	* dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
	(_dbus_marshal_validate_arg):
	* dbus/dbus-message-builder.c: (_dbus_message_data_load):
	* dbus/dbus-message.c: (dbus_message_append_args_valist),
	(dbus_message_append_boolean), (dbus_message_append_boolean_array),
	(dbus_message_get_args_valist), (dbus_message_iter_get_boolean),
	(dbus_message_iter_get_int32), (dbus_message_iter_get_uint32),
	(dbus_message_iter_get_double),
	(dbus_message_iter_get_boolean_array), (message_iter_test):
	* dbus/dbus-message.h:
	* dbus/dbus-protocol.h:
	* doc/dbus-specification.sgml:
	* test/data/valid-messages/lots-of-arguments.message:
	Add support for boolean and boolean array types.
2003-02-24 19:04:13 +00:00
Havoc Pennington
2f38c95921 2003-02-23 Havoc Pennington <hp@pobox.com>
* dbus/dbus-keyring.c: finish most of this implementation and
	simple unit test

	* dbus/dbus-errors.c (dbus_set_error_const, dbus_set_error): make
	these barf if the error isn't cleared to NULL

	* dbus/dbus-sysdeps.c (_dbus_delete_file): set error on failure
	(_dbus_create_directory): new function

	* dbus/dbus-errors.c (dbus_set_error): fix warning

	* dbus/dbus-string.c (_dbus_string_hex_encode): new function
	(_dbus_string_hex_decode): new function
	(test_hex_roundtrip): test code

	* dbus/dbus-sha.c (_dbus_sha_compute): use dbus_string_hex_encode

	* dbus/dbus-md5.c (_dbus_md5_compute): use dbus_string_hex_encode

	* dbus/dbus-sysdeps.c (_dbus_string_save_to_file): make this use
	the save-to-temp/rename trick to atomically write the new file
	(_dbus_string_parse_uint): new function
2003-02-24 02:24:13 +00:00
Havoc Pennington
983374a758 2003-02-22 Havoc Pennington <hp@pobox.com>
* test/Makefile.am (dist-hook): fix dist for test/data/sha-1
2003-02-22 17:31:24 +00:00
Havoc Pennington
6c07098c5e 2003-02-22 Havoc Pennington <hp@pobox.com>
* dbus/dbus-message.c (dbus_message_iter_get_string_array):
	(dbus_message_iter_get_byte_array): Fix up doxygen warnings

	* dbus/dbus-sha.c: add implementation of SHA-1 algorithm

	* dbus/test/data/sha-1: add US government test suite for SHA-1
2003-02-22 17:29:48 +00:00
Anders Carlsson
92f7d50b3b 2003-02-21 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-marshal.c: (_dbus_demarshal_string_array):
	Make string arrays NULL-terminated.

	* dbus/dbus-memory.c: (dbus_free_string_array):
	* dbus/dbus-memory.h:
	New function for freeing NULL-terminated string arrays.

	* dbus/dbus-message-builder.c: (append_quoted_string),
	(_dbus_message_data_load):
	Add support for array types.

	* dbus/dbus-message.c: (check_message_handling):
	Add more types as test cases.

	* dbus/dbus-sysdeps.c: (_dbus_string_parse_int),
	(_dbus_string_parse_double):
	Add the start offset to the end offset.

	* test/data/valid-messages/lots-of-arguments.message:
	New test message with lots of arguments.
2003-02-21 20:51:34 +00:00
Anders Carlsson
fdb3ecc333 2003-02-21 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-message.c: (dbus_message_append_nil),
	(dbus_message_append_int32), (dbus_message_append_uint32),
	(dbus_message_append_double), (dbus_message_append_string),
	(dbus_message_append_int32_array),
	(dbus_message_append_uint32_array),
	(dbus_message_append_double_array),
	(dbus_message_append_byte_array),
	(dbus_message_append_string_array):
	Fix all out-of-memory handling in these functions.
2003-02-21 18:45:08 +00:00