[telepathy-gabble/telepathy-gabble-0.8] Fix a crash when advertising tube caps without Service{, Name}

Sjoerd Simons sjoerd.simons at collabora.co.uk
Fri Aug 28 13:14:10 PDT 2009


---
 src/private-tubes-factory.c |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/private-tubes-factory.c b/src/private-tubes-factory.c
index 5a10640..42f9d93 100644
--- a/src/private-tubes-factory.c
+++ b/src/private-tubes-factory.c
@@ -888,20 +888,26 @@ gabble_private_tubes_factory_add_cap (GabbleCapsChannelManager *manager,
       Feature *feat = g_new0 (Feature, 1);
       gchar *service = g_strdup (tp_asv_get_string (cap,
           TP_IFACE_CHANNEL_TYPE_STREAM_TUBE ".Service"));
-      feat->feature_type = FEATURE_OPTIONAL;
-      feat->ns = g_strdup_printf ("%s/stream#%s", NS_TUBES, service);
-      feat->caps = 0;
-      g_hash_table_insert (caps->stream_tube_caps, service, feat);
+      if (service != NULL)
+        {
+          feat->feature_type = FEATURE_OPTIONAL;
+          feat->ns = g_strdup_printf ("%s/stream#%s", NS_TUBES, service);
+          feat->caps = 0;
+          g_hash_table_insert (caps->stream_tube_caps, service, feat);
+        }
     }
   else if (!tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_DBUS_TUBE))
     {
       Feature *feat = g_new0 (Feature, 1);
       gchar *service = g_strdup (tp_asv_get_string (cap,
           TP_IFACE_CHANNEL_TYPE_DBUS_TUBE ".ServiceName"));
-      feat->feature_type = FEATURE_OPTIONAL;
-      feat->ns = g_strdup_printf ("%s/dbus#%s", NS_TUBES, service);
-      feat->caps = 0;
-      g_hash_table_insert (caps->dbus_tube_caps, service, feat);
+      if (service != NULL)
+        {
+          feat->feature_type = FEATURE_OPTIONAL;
+          feat->ns = g_strdup_printf ("%s/dbus#%s", NS_TUBES, service);
+          feat->caps = 0;
+          g_hash_table_insert (caps->dbus_tube_caps, service, feat);
+        }
     }
 }
 
-- 
1.5.6.5



More information about the telepathy-commits mailing list