summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Adam <jakub.adam@ktknet.cz>2016-05-02 11:19:04 +0200
committerJakub Adam <jakub.adam@ktknet.cz>2016-05-02 11:19:04 +0200
commit67cabcf0add0bf73adb5d8ef6e7be8b6532d5c73 (patch)
tree28138fe8591dae1153445a24530306a2c7ff184f
parent466df7ad3057bf87b516ae8adb7ac92ab7019f26 (diff)
downloadpidgin-67cabcf0add0bf73adb5d8ef6e7be8b6532d5c73.tar.gz
media: fix possible NULL dereference in state_changed_cb()
-rw-r--r--libpurple/media/backend-fs2.c14
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);