# HG changeset patch # User nikita@beem-project.com # Date 1294455486 0 # Node ID 4b101cad58e7cd227af8ab7a5bc7998890462a16 # Parent 4f89666c8d81d39159ddcf40faca98bda4bd150f Don't crash on invalid/unexpected jingle transport types. Fixes #13136. committer: John Bailey diff -r 4f89666c8d81 -r 4b101cad58e7 libpurple/protocols/jabber/jingle/content.c --- a/libpurple/protocols/jabber/jingle/content.c Sat Jan 08 02:34:47 2011 +0000 +++ b/libpurple/protocols/jabber/jingle/content.c Sat Jan 08 02:58:06 2011 +0000 @@ -384,6 +384,8 @@ const gchar *name = xmlnode_get_attrib(content, "name"); JingleTransport *transport = jingle_transport_parse(xmlnode_get_child(content, "transport")); + if (transport == NULL) + return NULL; if (senders == NULL) senders = "both"; diff -r 4f89666c8d81 -r 4b101cad58e7 libpurple/protocols/jabber/jingle/jingle.c --- a/libpurple/protocols/jabber/jingle/jingle.c Sat Jan 08 02:34:47 2011 +0000 +++ b/libpurple/protocols/jabber/jingle/jingle.c Sat Jan 08 02:58:06 2011 +0000 @@ -42,6 +42,9 @@ GType jingle_get_type(const gchar *type) { + if (type == NULL) + return G_TYPE_NONE; + if (!strcmp(type, JINGLE_TRANSPORT_RAWUDP)) return JINGLE_TYPE_RAWUDP; else if (!strcmp(type, JINGLE_TRANSPORT_ICEUDP)) diff -r 4f89666c8d81 -r 4b101cad58e7 libpurple/protocols/jabber/jingle/transport.c --- a/libpurple/protocols/jabber/jingle/transport.c Sat Jan 08 02:34:47 2011 +0000 +++ b/libpurple/protocols/jabber/jingle/transport.c Sat Jan 08 02:58:06 2011 +0000 @@ -159,8 +159,12 @@ JingleTransport * jingle_transport_parse(xmlnode *transport) { - const gchar *type = xmlnode_get_namespace(transport); - return JINGLE_TRANSPORT_CLASS(g_type_class_ref(jingle_get_type(type)))->parse(transport); + const gchar *type_name = xmlnode_get_namespace(transport); + GType type = jingle_get_type(type_name); + if (type == G_TYPE_NONE) + return NULL; + + return JINGLE_TRANSPORT_CLASS(g_type_class_ref(type))->parse(transport); } xmlnode *