Commit graph

26 commits

Author SHA1 Message Date
Havoc Pennington
f7beca572b 2004-06-07 Havoc Pennington <hp@redhat.com>
* dbus/dbus-message-builder.c (_dbus_message_data_load): append
	random signature when using REQUIRED_FIELDS (this hack won't work
	in the long term)

	* dbus/dbus-message.c: change the signature to be a header field,
	instead of message->signature special-case string. Incremental
	step forward. Then we can fix up code to send the signature in the
	message, then fix up code to validate said signature, then fix up
	code to not put the typecodes inline, etc.
	(load_one_message): don't make up the signature after the fact
	(decode_header_data): require signature field for the known
	message types

	* dbus/dbus-marshal.c (_dbus_marshal_string_len): new

	* dbus/dbus-protocol.h: add DBUS_HEADER_FIELD_SIGNATURE
2004-06-07 19:27:51 +00:00
Kristian Høgsberg
4e243ba4b4 2004-04-25 Kristian Høgsberg <krh@redhat.com>
* test/data/valid-messages/standard-*.message: Update message
	test scripts to new header field names.
2004-04-25 15:50:23 +00:00
Havoc Pennington
7574224200 2003-10-20 Havoc Pennington <hp@redhat.com>
hmm, make check is currently not passing.

	* doc/dbus-specification.xml: add requirement that custom type
	names follow the same rules as interface names.

	* dbus/dbus-protocol.h: change some of the byte codes, to avoid
	duplication and allow 'c' to be 'custom'; dict is now 'm' for
	'map'

	* doc/dbus-specification.xml: update type codes to match
	dbus-protocol.h, using the ASCII byte values. Rename type NAMED to
	CUSTOM. Add type OBJECT_PATH to the spec.

2003-10-17  Havoc Pennington  <hp@redhat.com>

	* bus/driver.c (create_unique_client_name): use "." as separator
	in base service names instead of '-'

	* dbus/dbus-string.c (_dbus_string_get_byte): allow getting nul
	byte at the end of the string

	* dbus/dbus-internals.h (_DBUS_LIKELY, _DBUS_UNLIKELY): add
	optimization macros since string validation seems to be a slow
	point.

	* doc/dbus-specification.xml: restrict valid
	service/interface/member/error names. Add test suite code for the
	name validation.

	* dbus/dbus-string.c: limit service/interface/member/error names
	to [0-9][A-Z][a-z]_

	* dbus/dbus-connection.c (dbus_connection_dispatch): add missing
	format arg to verbose spew

	* glib/dbus-gproxy.c (dbus_gproxy_call_no_reply): if not out of
	memory, return instead of g_error

	* test/test-service.c (path_message_func): support emitting a
	signal on request

	* dbus/dbus-bus.c (init_connections_unlocked): only fill in
	activation bus type if DBUS_BUS_ACTIVATION was set; default to
	assuming the activation bus was the session bus so that services
	started manually will still register.
	(init_connections_unlocked): fix so that in OOM situation we get
	the same semantics when retrying the function

	* test/test-service.c (main): change to use path registration, to
	test those codepaths; register with DBUS_BUS_ACTIVATION rather
	than DBUS_BUS_SESSION
2003-10-21 05:46:52 +00:00
Mark McLoughlin
46c072e113 2003-09-25 Mark McLoughlin <mark@skynet.ie>
* doc/dbus-specification.sgml: don't require header fields
	to be 4-byte aligned and specify that fields should be
	distinguished from padding by the fact that zero is not
	a valid field name.

	* doc/TODO: remove re-alignment item and add item to doc
	the OBJECT_PATH type.

	* dbus/dbus-message.c:
	(HeaderField): rename the original member to value_offset
	and introduce a name_offset member to keep track of where
	the field actually begins.
	(adjust_field_offsets): remove.
	(append_int_field), (append_uint_field),
	(append_string_field): don't align the start of the header
	field to a 4-byte boundary.
	(get_next_field): impl finding the next marhsalled field
	after a given field.
	(re_align_field_recurse): impl re-aligning a number of
	already marshalled fields.
	(delete_field): impl deleting a field of any type and
	re-aligning any following fields.
	(delete_int_or_uint_field), (delete_string_field): remove.
	(set_int_field), (set_uint_field): no need to re-check
	that we have the correct type for the field.
	(set_string_field): ditto and impl re-aligning any
	following fields.
	(decode_header_data): update to take into account that
	the fields aren't 4-byte aligned any more and the new
	way to distinguish padding from header fields. Also,
	don't exit when there is too much header padding.
	(process_test_subdir): print the directory.
	(_dbus_message_test): add test to make sure a following
	field is re-aligned correctly after field deletion.

	* dbus/dbus-string.[ch]:
	(_dbus_string_insert_bytes): rename from insert_byte and
	allow the insert of multiple bytes.
	(_dbus_string_test): test inserting multiple bytes.

	* dbus/dbus-marshal.c: (_dbus_marshal_set_string): add
	warning note to docs about having to re-align any
	marshalled values following the string.

	* dbus/dbus-message-builder.c:
	(append_string_field), (_dbus_message_data_load):
	don't align the header field.

	* dbus/dbus-auth.c: (process_test_subdir): print the
	directory.

	* test/break-loader.c: (randomly_add_one_byte): upd. for
	insert_byte change.

	* test/data/invalid-messages/bad-header-field-alignment.message:
	new test case.

	* test/data/valid-messages/unknown-header-field.message: shove
	a dict in the unknown field.
2003-09-25 08:50:14 +00:00
Mark McLoughlin
daf8d6579e 2003-09-21 Mark McLoughlin <mark@skynet.ie>
* doc/dbus-specification.sgml: Change the header field name
        to be an enum and update the rest of the spec to reference
        the fields using the conventinal name.

        * dbus/dbus-protocol.h: update to reflect the spec.

        * doc/TODO: add item to remove the 4 byte alignment requirement.

        * dbus/dbus-message.c: Remove the code to generalise the
        header/body length and serial number header fields as named
        header fields so we can reference field names using the
        protocol values.
        (append_int_field), (append_uint_field), (append_string_field):
        Append the field name as a byte rather than four chars.
        (delete_int_or_uint_field), (delete_string_field): reflect the
        fact that the field name and typecode now occupy 4 bytes instead
        of 8.
        (decode_string_field), (decode_header_data): update to reflect
        protocol changes and move the field specific encoding from
        decode_string_field() back into decode_header_data().

        * dbus/dbus-internals.[ch]: (_dbus_header_field_to_string):
        Add utility to aid debugging.

        * dbus/dbus-message-builder.c:
        (append_string_field), (_dbus_message_data_load): Update to
        reflect protocol changes; Change the FIELD_NAME directive
        to HEADER_FIELD and allow it to take the field's conventional
        name rather than the actual value.

        * test/data/*/*.message: Update to use HEADER_FIELD instead
        of FIELD_NAME; Always align the header on an 8 byte boundary
        *before* updating the header length.
2003-09-21 18:43:20 +00:00
Havoc Pennington
5fd1e389e1 2003-08-30 Havoc Pennington <hp@pobox.com>
* test/data/valid-config-files/system.d/test.conf: change to
	root for the user so warnings don't get printed

	* dbus/dbus-message.c: add dbus_message_get_path,
	dbus_message_set_path

	* dbus/dbus-object-tree.c (do_test_dispatch): add test of
	dispatching to a path

	* dbus/dbus-string.c (_dbus_string_validate_path): add

	* dbus/dbus-marshal.c (_dbus_demarshal_object_path): implement
	(_dbus_marshal_object_path): implement

	* dbus/dbus-protocol.h (DBUS_HEADER_FIELD_PATH): new header field
	to contain the path to the target object
	(DBUS_HEADER_FIELD_SENDER_SERVICE): rename
	DBUS_HEADER_FIELD_SENDER to explicitly say it's the sender service
2003-08-31 01:51:44 +00:00
Havoc Pennington
68a3c593b9 2003-08-18 Havoc Pennington <hp@redhat.com>
* dbus/dbus-hash.c (_dbus_hash_table_insert_two_strings): fix

	* dbus/dbus-message.c (_dbus_message_loader_queue_messages): fix
	dumb bug created earlier (wrong order of args to
	decode_header_data())

	* tools/dbus-send.c: port

	* tools/dbus-print-message.c (print_message): port

        * test/data/*messages: port all messages over

        * dbus/dbus-message-builder.c: support including
	message type

        * bus/driver.c: port over

	* bus/dispatch.c: port over to new stuff

	* dbus/dbus-connection.c (_dbus_connection_new_for_transport):
	rename disconnect signal to "Disconnected"
2003-08-18 22:43:30 +00:00
Havoc Pennington
9c5d01f0fe 2003-08-01 Havoc Pennington <hp@pobox.com>
* dbus/dbus-object-registry.c (_dbus_object_registry_handle_and_unlock):
	implement

	* dbus/dbus-message.c (dbus_message_get_type): new function

	* doc/dbus-specification.sgml: add "type" byte to messages
2003-08-02 03:39:35 +00:00
Havoc Pennington
b3a3969897 2003-04-22 Havoc Pennington <hp@redhat.com>
* test/data/valid-messages/opposite-endian.message: fix test
	to use proper type for rply field

        * test/data/invalid-messages: add tests for below validation

	* dbus/dbus-message.c (decode_header_data): validate field types,
	and validate that named fields are valid names
	(decode_name_field): consider messages in the
	org.freedesktop.Local. namespace to be invalid.

	* dbus/dbus-string.c (_dbus_string_validate_name): new
2003-04-22 19:34:33 +00:00
Alexander Larsson
e84c3a03b3 2003-04-10 Alexander Larsson <alexl@redhat.com>
* dbus/dbus-marshal.[ch]:
	Add array_type_pos argument to _dbus_marshal_validate_arg.
	Let you pass a NULL end_pos to _dbus_marshal_validate_type.

	* dbus/dbus-message.[ch]:
	Multi-dimensional arrays have full type specification in the
	outermost array. Iter code re-arranged to handle this.
	Added some more iter tests.

	* doc/dbus-specification.sgml:
	Add me to authors.
	Remove old FIXME.
	Update new array encoding description.
	Correct DBUS_SERVICE_FLAGS_REPLACE_EXISTING description.

	* test/data/invalid-messages/array-with-mixed-types.message:
	* test/data/valid-messages/array-of-array-of-uint32.message:
	Change to the new array format.

	* test/data/invalid-messages/too-short-dict.message:
	Fix bug in test.

	* test/data/valid-messages/recursive-types.message:
	Fix up and extend test.
2003-04-10 11:04:24 +00:00
Havoc Pennington
0366385618 2003-04-08 Havoc Pennington <hp@redhat.com>
* test/data/invalid-messages/array-with-mixed-types.message:
	regression test that fails for the moment

	* dbus/dbus-test.c (dbus_internal_do_not_use_run_tests): reorder
	tests for convenience

	* dbus/dbus-marshal.c (_dbus_marshal_validate_arg): don't allow
	array of nil, it broke things.

	* test/data/invalid-messages/array-of-nil.message: regression test

	* test/data/valid-messages/array-of-array-of-uint32.message:
	happened to write this so added it to suite
2003-04-08 22:07:09 +00:00
Alexander Larsson
c5020ac870 2003-04-08 Alexander Larsson <alexl@redhat.com>
Implemented recursive types, named types and new-style iters

	* bus/driver.c:
	* glib/test-thread-client.c: (thread_func):
	* glib/test-thread-server.c: (handle_test_message):
	* test/test-service.c: (handle_echo):
	Update to new api

	* dbus/Makefile.am:
	* dbus/dbus-dict.c:
	* dbus/dbus-dict.h:
	* dbus/dbus.h
	Remove DBusDict

	* dbus/dbus-internals.c: (_dbus_type_to_string):
	Update for new types.

	* dbus/dbus-marshal.[ch]:
	Implement recursive types and the new marshalling format.
	Remove hardcoded dict marshalling.
	Marshal named types.

	* dbus/dbus-message-builder.c:
	Add BYTE_ARRAY.
	Remove references to old types

	* dbus/dbus-message.[ch]:
	New non-refcounted iter API that supports recursive iters.
	Use iters for appending, including support for recursive
	iters.
	Add byte and named type support.
	Update everything to new marshalling formats.
	Add tests for new API.

	* dbus/dbus-protocol.h:
	Remove old array types.
	Add types: BYTE, ARRAY, DICT, NAMED

	* dbus/dbus-string.c:
	* dbus/dbus-sysdeps.c:
	Make parse_double locale safe.

	* dbus/dbus-test-main.c:
	Call setlocale.

	* dbus/dbus-test.c:
	Kill dict test

	* doc/dbus-specification.sgml:
	Update spec

	* test/data/incomplete-messages/missing-body.message:
	* test/data/invalid-messages/bad-boolean.message:
	* test/data/invalid-messages/bad-boolean-array.message:
	* test/data/invalid-messages/boolean-array-length-too-long.message-raw:
	* test/data/invalid-messages/boolean-has-no-value.message-raw:
	* test/data/invalid-messages/too-short-dict.message:
	* test/data/valid-messages/dict-simple.message:
	* test/data/valid-messages/dict.message:
	* test/data/valid-messages/emptiness.message:
	* test/data/valid-messages/lots-of-arguments.message:
	* test/data/valid-messages/no-padding.message:
	* test/data/valid-messages/recursive-types.message:
	Add missing NAME fields
	Fix up dicts & arrays

	* test/data/invalid-messages/dict-with-nil-value.message:
	Removed, this is not invalid anymore.

	* test/data/valid-messages/recursive-types.message:
	Add new test for deeply recursive types.
2003-04-08 15:52:51 +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
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
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
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
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
89ee9e6abf 2003-02-19 Anders Carlsson <andersca@codefactory.se>
* configure.in:
	Add check for nonposix getpwnam_r

	* dbus/dbus-mempool.c: (_dbus_mem_pool_new):
	Align the pool element size to a sizeof (void *) boundary.

	* dbus/dbus-sysdeps.c: (_dbus_setenv), (_dbus_connect_unix_socket),
	(_dbus_listen_unix_socket), (_dbus_credentials_from_username):
	General Solaris fixes.

	* test/data/valid-messages/simplest-manual.message:
	Explicitly state that we want little-endian packing.
2003-02-19 16:23:41 +00:00
Havoc Pennington
4a8a03aeb7 2003-02-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-connection.c (dbus_connection_set_change_sigpipe):
	allow people to avoid setting SIGPIPE to SIG_IGN
	(_dbus_connection_new_for_transport): disable SIGPIPE unless
	we've been asked not to
2003-02-16 07:20:54 +00:00
Anders Carlsson
f28c364352 2003-02-13 Anders Carlsson <andersca@codefactory.se>
* test/data/valid-messages/standard-acquire-service.message:
	* test/data/valid-messages/standard-hello.message:
	* test/data/valid-messages/standard-list-services.message:
	* test/data/valid-messages/standard-service-exists.message:
	Add some standard messages.
2003-02-13 15:39:58 +00:00
Anders Carlsson
8ab042b957 2003-01-31 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-address.c: (dbus_address_entry_free):
	Free key and value lists.

	* dbus/dbus-internals.c: (_dbus_type_to_string):
	Add the types we didn't have.

	* dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
	(_dbus_marshal_validate_arg):
	Add NIL types.

	* dbus/dbus-message.c: (dbus_message_set_sender):
	Remove todo about being able to set sender to NULL.

	(dbus_message_set_is_error_reply),
	(dbus_message_get_is_error_reply):
	* dbus/dbus-message.h:
	New functions.

	* dbus/dbus-protocol.h:
	Add error reply flag.

	* test/data/valid-messages/opposite-endian.message:
	Add NIL type to test.
2003-01-31 13:36:36 +00:00
Havoc Pennington
7ba714ad7f 2003-01-30 Havoc Pennington <hp@pobox.com>
* dbus/dbus-message.c: use message->byte_order instead of
	DBUS_COMPILER_BYTE_ORDER throughout.
	(dbus_message_create_header): pad header to align the
	start of the body of the message to 8-byte boundary

	* dbus/dbus-marshal.h: make all the demarshalers take const
	DBusString arguments.

	* dbus/dbus-message.c (_dbus_message_loader_return_buffer):
	validate message args here, so we don't have to do slow validation
	later, and so we catch bad messages as they are incoming. Also add
	better checks on header_len and body_len. Also fill in
	message->byte_order

	* dbus/dbus-string.c (_dbus_string_validate_utf8): new (not
	implemented properly)
	(_dbus_string_validate_nul): new function to check all-nul

	* dbus/dbus-marshal.c (_dbus_marshal_get_field_end_pos): rename
	get_arg_end_pos and remove all validation
	(_dbus_marshal_validate_arg): actually do validation here.
2003-01-30 04:20:44 +00:00
Havoc Pennington
bec3c093ca 2003-01-28 Havoc Pennington <hp@pobox.com>
* dbus/dbus-message.c (check_message_handling): function to check
	on the loaded message, iterates over it etc.
2003-01-28 04:20:29 +00:00
Havoc Pennington
05a4ad6994 2003-01-27 Havoc Pennington <hp@pobox.com>
* dbus/dbus-mempool.c (time_for_size): replace printf with
	_dbus_verbose

	* dbus/dbus-message-builder.c (_dbus_message_data_load): allow
	empty lines; fix the SAVE_LENGTH stuff to be
	START_LENGTH/END_LENGTH so it actually works; couple other
	bugfixes

	* test/Makefile.am (dist-hook): add dist-hook for .message files

	* dbus/dbus-string.c (DBUS_STRING_COPY_PREAMBLE): source of a copy
	can be constant or locked.
	(_dbus_string_free): allow freeing a const string as
	documented/intended

	* dbus/dbus-sysdeps.c (_dbus_concat_dir_and_file): utility

	* dbus/dbus-test-main.c (main): take an argument which is the
	directory containing test data

	* dbus/dbus-message.c (_dbus_message_test): pass a test_data_dir
	argument to this and load all the messages in test/data/
	checking that they can be loaded or not loaded as appropriate.
2003-01-28 03:53:29 +00:00
Havoc Pennington
2f440457d5 2003-01-26 Havoc Pennington <hp@pobox.com>
* dbus/dbus-message-builder.c: implement, completely untested.

	* test/data/*: add data to be used in testing.
	".message" files are our simple loadable text format.
	".message-raw" will be binary dumps of messages.

	* dbus/dbus-string.c (_dbus_string_starts_with_c_str): new
2003-01-26 21:16:06 +00:00