summaryrefslogtreecommitdiffstats
path: root/dbus
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-10-11 06:20:28 +0000
committerHavoc Pennington <hp@redhat.com>2003-10-11 06:20:28 +0000
commit40751c847b18b4861f623fc83fc8742bc463363b (patch)
treef4875210529f3f957841f234f3316bc614c9fcba /dbus
parentc1f0e189030ceb2bafea0bc30d6b72a0fa381ddc (diff)
2003-10-11 Havoc Pennington <hp@pobox.com>
* dbus/dbus-message.c (_dbus_message_test): add more test coverage, but #if 0 for now since they uncover a bug not fixed yet; I think in re_align_field_recurse() (re_align_field_recurse): add FIXME about broken assertion * dbus/dbus-sysdeps.c (_dbus_sysdeps_test): add more test coverage * bus/connection.c: share a couple code bits with expirelist.c * bus/expirelist.h, bus/expirelist.c: implement a generic expire-items-after-N-seconds facility, was going to share between expiring connections and replies, decided not to use for expiring connections for now. * bus/connection.c: add tracking of expected replies * COPYING: include AFL 2.0 (still need to change all the file headers)
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-message.c69
-rw-r--r--dbus/dbus-sysdeps.c18
2 files changed, 82 insertions, 5 deletions
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c
index 38fd3790..18a9b50f 100644
--- a/dbus/dbus-message.c
+++ b/dbus/dbus-message.c
@@ -489,6 +489,9 @@ re_align_field_recurse (DBusMessage *message,
case DBUS_TYPE_NAMED:
case DBUS_TYPE_ARRAY:
case DBUS_TYPE_DICT:
+ /* FIXME This is no good; we have to handle undefined header fields
+ * also. SECURITY and spec compliance issue.
+ */
_dbus_assert_not_reached ("no defined header fields may contain a named, array or dict value");
break;
case DBUS_TYPE_INVALID:
@@ -540,7 +543,7 @@ re_align_field_recurse (DBusMessage *message,
/* this must succeed because it was allocated on function entry and
* DBusString doesn't ever realloc smaller
*/
- _dbus_string_insert_bytes (&message->header, pos, -delta, 0);
+ _dbus_string_insert_bytes (&message->header, pos, -delta, 0);
}
return FALSE;
@@ -729,7 +732,7 @@ set_string_field (DBusMessage *message,
len = strlen (old_value);
_dbus_string_init_const_len (&v, old_value,
- len + 1); /* include nul */
+ len + 1); /* include nul */
if (!_dbus_marshal_set_string (&message->header,
message->byte_order,
offset, &v, len))
@@ -741,7 +744,7 @@ set_string_field (DBusMessage *message,
}
dbus_free (old_value);
-
+
return TRUE;
failed:
@@ -6553,12 +6556,16 @@ _dbus_message_test (const char *test_data_dir)
_dbus_assert (dbus_message_has_destination (message, "org.freedesktop.DBus.TestService"));
_dbus_assert (dbus_message_is_method_call (message, "Foo.TestInterface",
"TestMethod"));
+ _dbus_assert (strcmp (dbus_message_get_path (message),
+ "/org/freedesktop/TestPath") == 0);
_dbus_message_set_serial (message, 1234);
/* string length including nul byte not a multiple of 4 */
- dbus_message_set_sender (message, "org.foo.bar1");
+ if (!dbus_message_set_sender (message, "org.foo.bar1"))
+ _dbus_assert_not_reached ("out of memory");
_dbus_assert (dbus_message_has_sender (message, "org.foo.bar1"));
dbus_message_set_reply_serial (message, 5678);
- dbus_message_set_sender (message, NULL);
+ if (!dbus_message_set_sender (message, NULL))
+ _dbus_assert_not_reached ("out of memory");
_dbus_assert (!dbus_message_has_sender (message, "org.foo.bar1"));
_dbus_assert (dbus_message_get_serial (message) == 1234);
_dbus_assert (dbus_message_get_reply_serial (message) == 5678);
@@ -6569,6 +6576,58 @@ _dbus_message_test (const char *test_data_dir)
_dbus_assert (dbus_message_get_no_reply (message) == TRUE);
dbus_message_set_no_reply (message, FALSE);
_dbus_assert (dbus_message_get_no_reply (message) == FALSE);
+
+#if 0
+ /* Set/get some header fields */
+
+ if (!dbus_message_set_path (message, "/foo"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_path (message),
+ "/foo") == 0);
+
+ if (!dbus_message_set_interface (message, "org.Foo"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_interface (message),
+ "org.Foo") == 0);
+
+ if (!dbus_message_set_member (message, "Bar"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_member (message),
+ "Bar") == 0);
+
+ /* Set/get them with longer values */
+ if (!dbus_message_set_path (message, "/foo/bar"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_path (message),
+ "/foo/bar") == 0);
+
+ if (!dbus_message_set_interface (message, "org.Foo.Bar"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_interface (message),
+ "org.Foo.Bar") == 0);
+
+ if (!dbus_message_set_member (message, "BarFoo"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_member (message),
+ "BarFoo") == 0);
+
+ /* Realloc shorter again */
+
+ if (!dbus_message_set_path (message, "/foo"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_path (message),
+ "/foo") == 0);
+
+ if (!dbus_message_set_interface (message, "org.Foo"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_interface (message),
+ "org.Foo") == 0);
+
+ if (!dbus_message_set_member (message, "Bar"))
+ _dbus_assert_not_reached ("out of memory");
+ _dbus_assert (strcmp (dbus_message_get_member (message),
+ "Bar") == 0);
+#endif
dbus_message_unref (message);
diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c
index c3ddf8cd..5011f224 100644
--- a/dbus/dbus-sysdeps.c
+++ b/dbus/dbus-sysdeps.c
@@ -3381,6 +3381,24 @@ _dbus_sysdeps_test (void)
exit (1);
}
+ _dbus_string_init_const (&str, "0xff");
+ if (!_dbus_string_parse_double (&str,
+ 0, &val, &pos))
+ {
+ _dbus_warn ("Failed to parse double");
+ exit (1);
+ }
+ if (val != 0xff)
+ {
+ _dbus_warn ("Failed to parse 0xff correctly, got: %f", val);
+ exit (1);
+ }
+ if (pos != 4)
+ {
+ _dbus_warn ("_dbus_string_parse_double of \"0xff\" returned wrong position %d", pos);
+ exit (1);
+ }
+
check_path_absolute ("/", TRUE);
check_path_absolute ("/foo", TRUE);
check_path_absolute ("", FALSE);