diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-04-21 22:17:53 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-04-21 22:59:25 +0800 |
commit | 3ba482ccc034647d8e4bde47f92e3a86720150a3 (patch) | |
tree | 05327aa65d52e7764128f4d07c4aeb4467c4ed3a | |
parent | d5a1d263c64667a98f42a80b47a50d7359d83119 (diff) | |
download | gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.tar gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.tar.gz gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.tar.bz2 gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.tar.lz gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.tar.xz gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.tar.zst gsoc2013-empathy-3ba482ccc034647d8e4bde47f92e3a86720150a3.zip |
empathy_tube_handler_build_bus_name: escape invalid char in the service name
-rw-r--r-- | libempathy/empathy-tube-handler.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/libempathy/empathy-tube-handler.c b/libempathy/empathy-tube-handler.c index 4fb82177d..18cda18b3 100644 --- a/libempathy/empathy-tube-handler.c +++ b/libempathy/empathy-tube-handler.c @@ -185,12 +185,31 @@ OUT: return thandler; } +static gchar * +sanitize_service_name (const gchar *str) +{ + guint i; + gchar *result; + + g_assert (str != NULL); + result = g_strdup (str); + + for (i = 0; result[i] != '\0'; i++) + { + if (!g_ascii_isalnum (result[i])) + result[i] = '_'; + } + + return result; +} + gchar * empathy_tube_handler_build_bus_name (TpTubeType type, const gchar *service) { gchar *str = NULL; const gchar *prefix = NULL; + gchar *service_escaped; g_return_val_if_fail (type < NUM_TP_TUBE_TYPES, NULL); g_return_val_if_fail (service != NULL, NULL); @@ -202,7 +221,9 @@ empathy_tube_handler_build_bus_name (TpTubeType type, else g_return_val_if_reached (NULL); - str = g_strconcat (prefix, service, NULL); + service_escaped = sanitize_service_name (service); + str = g_strconcat (prefix, service_escaped, NULL); + g_free (service_escaped); return str; } |