diff options
author | Jakub Adam <jakub.adam@ktknet.cz> | 2016-05-02 11:19:04 +0200 |
---|---|---|
committer | Jakub Adam <jakub.adam@ktknet.cz> | 2016-05-02 11:19:04 +0200 |
commit | 67cabcf0add0bf73adb5d8ef6e7be8b6532d5c73 (patch) | |
tree | 28138fe8591dae1153445a24530306a2c7ff184f | |
parent | 466df7ad3057bf87b516ae8adb7ac92ab7019f26 (diff) | |
download | pidgin-67cabcf0add0bf73adb5d8ef6e7be8b6532d5c73.tar.gz |
media: fix possible NULL dereference in state_changed_cb()
-rw-r--r-- | libpurple/media/backend-fs2.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c index 1e4e6638b4..38f6a62f6a 100644 --- a/libpurple/media/backend-fs2.c +++ b/libpurple/media/backend-fs2.c @@ -1565,10 +1565,16 @@ state_changed_cb(PurpleMedia *media, PurpleMediaState state, gst_object_unref(session->session); g_hash_table_remove(priv->sessions, session->id); - pad = gst_pad_get_peer(session->srcpad); - gst_element_remove_pad(GST_ELEMENT_PARENT(pad), pad); - gst_object_unref(pad); - gst_object_unref(session->srcpad); + if (session->srcpad) { + pad = gst_pad_get_peer(session->srcpad); + if (pad) { + gst_element_remove_pad( + GST_PAD_PARENT(pad), + pad); + gst_object_unref(pad); + } + gst_object_unref(session->srcpad); + } remove_element(session->srcvalve); remove_element(session->tee); |