[gtk/ebassi/for-master] a11y: Ensure valid object paths in the fallback code
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/ebassi/for-master] a11y: Ensure valid object paths in the fallback code
- Date: Mon, 16 Nov 2020 17:30:07 +0000 (UTC)
commit 5a1499a3771cac91f55c74a378999fc802ba7563
Author: Emmanuele Bassi <ebassi gnome org>
Date: Mon Nov 16 17:28:22 2020 +0000
a11y: Ensure valid object paths in the fallback code
When falling back to using the program name to create a unique base path
for the objects on the accessibility bus we need to ensure that the name
is a valid DBus object path.
gtk/a11y/gtkatspiroot.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
---
diff --git a/gtk/a11y/gtkatspiroot.c b/gtk/a11y/gtkatspiroot.c
index 925360c9a3..b511573882 100644
--- a/gtk/a11y/gtkatspiroot.c
+++ b/gtk/a11y/gtkatspiroot.c
@@ -665,6 +665,7 @@ gtk_at_spi_root_constructed (GObject *gobject)
{
const char *app_path = g_application_get_dbus_object_path (application);
+ /* No need to validate the path */
self->base_path = g_strconcat (app_path, "/a11y", NULL);
}
else
@@ -673,8 +674,27 @@ gtk_at_spi_root_constructed (GObject *gobject)
g_get_prgname (),
"/a11y",
NULL);
- }
+ /* Turn potentially invalid program names into something that can be
+ * used as a DBus path
+ */
+ size_t len = strlen (self->base_path);
+ for (size_t i = 0; i < len; i++)
+ {
+ char c = self->base_path[i];
+
+ if (c == '/')
+ continue;
+
+ if ((c >= '0' && c <= '9') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= 'a' && c <= 'z') ||
+ (c == '_'))
+ continue;
+
+ self->base_path[i] = '_';
+ }
+ }
out:
G_OBJECT_CLASS (gtk_at_spi_root_parent_class)->constructed (gobject);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]