From 3ba482ccc034647d8e4bde47f92e3a86720150a3 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Tue, 21 Apr 2009 15:17:53 +0100 Subject: [PATCH] empathy_tube_handler_build_bus_name: escape invalid char in the service name --- libempathy/empathy-tube-handler.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/libempathy/empathy-tube-handler.c b/libempathy/empathy-tube-handler.c index 4fb82177..18cda18b 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; } -- 2.39.2