diff -urNp pidgin-2.12.0.orig/libpurple/protocols/jabber/jingle/rtp.c pidgin-2.12.0/libpurple/protocols/jabber/jingle/rtp.c
--- pidgin-2.12.0.orig/libpurple/protocols/jabber/jingle/rtp.c 2017-04-26 21:07:29.580832030 +0200
+++ pidgin-2.12.0/libpurple/protocols/jabber/jingle/rtp.c 2017-04-26 21:08:50.778206082 +0200
@@ -950,6 +950,7 @@ jingle_rtp_initiate_media(JabberStream *
JingleTransport *transport;
JabberBuddy *jb;
JabberBuddyResource *jbr;
+ gboolean ret = FALSE;
const gchar *transport_type;
gchar *resource = NULL, *me = NULL, *sid = NULL;
@@ -958,16 +959,15 @@ jingle_rtp_initiate_media(JabberStream *
jb = jabber_buddy_find(js, who, FALSE);
if (!jb) {
purple_debug_error("jingle-rtp", "Could not find Jabber buddy\n");
- return FALSE;
+ goto out;
}
resource = jabber_get_resource(who);
jbr = jabber_buddy_find_resource(jb, resource);
- g_free(resource);
if (!jbr) {
purple_debug_error("jingle-rtp", "Could not find buddy's resource - %s\n", resource);
- return FALSE;
+ goto out;
}
if (jabber_resource_has_capability(jbr, JINGLE_TRANSPORT_ICEUDP)) {
@@ -977,7 +977,7 @@ jingle_rtp_initiate_media(JabberStream *
} else {
purple_debug_error("jingle-rtp", "Resource doesn't support "
"the same transport types\n");
- return FALSE;
+ goto out;
}
/* set ourselves as initiator */
@@ -985,7 +985,6 @@ jingle_rtp_initiate_media(JabberStream *
sid = jabber_get_next_id(js);
session = jingle_session_create(js, sid, me, who, TRUE);
- g_free(sid);
if (type & PURPLE_MEDIA_AUDIO) {
@@ -1005,13 +1004,17 @@ jingle_rtp_initiate_media(JabberStream *
jingle_rtp_init_media(content);
}
- g_free(me);
-
if (jingle_rtp_get_media(session) == NULL) {
- return FALSE;
+ goto out;
}
- return TRUE;
+ ret = TRUE;
+
+out:
+ g_free(me);
+ g_free(resource);
+ g_free(sid);
+ return ret;
}
void