[glib] gdbus: Ensure message matching always succeeds against path_namespace='/'
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gdbus: Ensure message matching always succeeds against path_namespace='/'
- Date: Wed, 23 Oct 2013 19:55:11 +0000 (UTC)
commit 856d90156942d340513942126c2536339e00d04a
Author: Philip Withnall <philip withnall collabora co uk>
Date: Wed Oct 23 15:45:15 2013 +0100
gdbus: Ensure message matching always succeeds against path_namespace='/'
This copies the fix from upstream D-Bus bug
https://bugs.freedesktop.org/show_bug.cgi?id=70799 to the GDBusDaemon
implementation, ensuring that matching against path_namespace='/' succeeds
for all keys (i.e. it’s a no-op).
https://bugzilla.gnome.org/show_bug.cgi?id=710726
gio/gdbusdaemon.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/gio/gdbusdaemon.c b/gio/gdbusdaemon.c
index 2393771..3631a90 100644
--- a/gio/gdbusdaemon.c
+++ b/gio/gdbusdaemon.c
@@ -596,9 +596,18 @@ match_matches (GDBusDaemon *daemon,
break;
case CHECK_TYPE_PATH_PREFIX:
len = strlen (element->value);
- if (!(g_str_has_prefix (value, element->value) &&
- (value[len] == 0 || value[len] == '/')))
+
+ /* Make sure to handle the case of element->value == '/'. */
+ if (len == 1)
+ break;
+
+ /* Fail if there's no prefix match, or if the prefix match doesn't
+ * finish at the end of or at a separator in the @value. */
+ if (!g_str_has_prefix (value, element->value))
+ return FALSE;
+ if (value[len] != 0 && value[len] != '/')
return FALSE;
+
break;
case CHECK_TYPE_PATH_RELATED:
len = strlen (element->value);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]