summaryrefslogtreecommitdiff
path: root/modules/gtk
diff options
context:
space:
mode:
authorAlfred E. Heggestad <aeh@db.org>2015-10-17 21:18:26 +0200
committerAlfred E. Heggestad <aeh@db.org>2015-10-17 21:18:26 +0200
commit991ae017db3e5ad8bc3388d3d82c1dea689f6877 (patch)
tree439d56fbb523f8ebf7f0a96149628e1ea892a4ec /modules/gtk
parent8a1ed03ec0b6e7b9ece668e85677e42b936823f3 (diff)
gtk: fix use-after-free (patch from Charles Lehner)
Diffstat (limited to 'modules/gtk')
-rw-r--r--modules/gtk/call_window.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/modules/gtk/call_window.c b/modules/gtk/call_window.c
index 4e3797d..c520e51 100644
--- a/modules/gtk/call_window.c
+++ b/modules/gtk/call_window.c
@@ -251,8 +251,10 @@ static void mqueue_handler(int id, void *data, void *arg)
break;
case MQ_CLOSE:
- ua_hangup(uag_current(), win->call, 0, NULL);
- win->closed = true;
+ if (!win->closed) {
+ ua_hangup(uag_current(), win->call, 0, NULL);
+ win->closed = true;
+ }
mem_deref(win);
break;
@@ -458,6 +460,7 @@ void call_window_closed(struct call_window *win, const char *reason)
}
call_window_set_status(win, status);
win->transfer_dialog = mem_deref(win->transfer_dialog);
+ win->closed = true;
}
void call_window_ringing(struct call_window *win)