mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-01-10 05:40:19 +01:00
path_namespace='/' should match everything
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=70799 Reviewed-by: Philip Withnall <philip.withnall@collabora.co.uk> Reviewed-by: Ryan Lortie <desrt@desrt.ca>
This commit is contained in:
parent
a96207da08
commit
cdff3bc41b
1 changed files with 29 additions and 1 deletions
|
|
@ -1836,8 +1836,11 @@ match_rule_matches (BusMatchRule *rule,
|
|||
* namespace, rather than just starting with that string,
|
||||
* by checking that the matched prefix is followed by a '/'
|
||||
* or the end of the path.
|
||||
*
|
||||
* Special case: the only valid path of length 1, "/",
|
||||
* matches everything.
|
||||
*/
|
||||
if (path[len] != '\0' && path[len] != '/')
|
||||
if (len > 1 && path[len] != '\0' && path[len] != '/')
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -2719,6 +2722,7 @@ test_path_matching (void)
|
|||
|
||||
static const char*
|
||||
path_namespace_should_match_message_1[] = {
|
||||
"type='signal',path_namespace='/'",
|
||||
"type='signal',path_namespace='/foo'",
|
||||
"type='signal',path_namespace='/foo/TheObjectManager'",
|
||||
NULL
|
||||
|
|
@ -2733,6 +2737,7 @@ path_namespace_should_not_match_message_1[] = {
|
|||
|
||||
static const char*
|
||||
path_namespace_should_match_message_2[] = {
|
||||
"type='signal',path_namespace='/'",
|
||||
"type='signal',path_namespace='/foo/TheObjectManager'",
|
||||
NULL
|
||||
};
|
||||
|
|
@ -2744,6 +2749,7 @@ path_namespace_should_not_match_message_2[] = {
|
|||
|
||||
static const char*
|
||||
path_namespace_should_match_message_3[] = {
|
||||
"type='signal',path_namespace='/'",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -2753,12 +2759,25 @@ path_namespace_should_not_match_message_3[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
static const char*
|
||||
path_namespace_should_match_message_4[] = {
|
||||
"type='signal',path_namespace='/'",
|
||||
NULL
|
||||
};
|
||||
|
||||
static const char*
|
||||
path_namespace_should_not_match_message_4[] = {
|
||||
"type='signal',path_namespace='/foo/TheObjectManager'",
|
||||
NULL
|
||||
};
|
||||
|
||||
static void
|
||||
test_matching_path_namespace (void)
|
||||
{
|
||||
DBusMessage *message1;
|
||||
DBusMessage *message2;
|
||||
DBusMessage *message3;
|
||||
DBusMessage *message4;
|
||||
|
||||
message1 = dbus_message_new (DBUS_MESSAGE_TYPE_SIGNAL);
|
||||
_dbus_assert (message1 != NULL);
|
||||
|
|
@ -2775,6 +2794,11 @@ test_matching_path_namespace (void)
|
|||
if (!dbus_message_set_path (message3, "/foo/TheObjectManagerOther"))
|
||||
_dbus_assert_not_reached ("oom");
|
||||
|
||||
message4 = dbus_message_new (DBUS_MESSAGE_TYPE_SIGNAL);
|
||||
_dbus_assert (message4 != NULL);
|
||||
if (!dbus_message_set_path (message4, "/"))
|
||||
_dbus_assert_not_reached ("oom");
|
||||
|
||||
check_matching (message1, 1,
|
||||
path_namespace_should_match_message_1,
|
||||
path_namespace_should_not_match_message_1);
|
||||
|
|
@ -2784,7 +2808,11 @@ test_matching_path_namespace (void)
|
|||
check_matching (message3, 3,
|
||||
path_namespace_should_match_message_3,
|
||||
path_namespace_should_not_match_message_3);
|
||||
check_matching (message4, 4,
|
||||
path_namespace_should_match_message_4,
|
||||
path_namespace_should_not_match_message_4);
|
||||
|
||||
dbus_message_unref (message4);
|
||||
dbus_message_unref (message3);
|
||||
dbus_message_unref (message2);
|
||||
dbus_message_unref (message1);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue