diff options
author | Alfred E. Heggestad <aeh@db.org> | 2015-10-17 21:18:26 +0200 |
---|---|---|
committer | Alfred E. Heggestad <aeh@db.org> | 2015-10-17 21:18:26 +0200 |
commit | 991ae017db3e5ad8bc3388d3d82c1dea689f6877 (patch) | |
tree | 439d56fbb523f8ebf7f0a96149628e1ea892a4ec | |
parent | 8a1ed03ec0b6e7b9ece668e85677e42b936823f3 (diff) |
gtk: fix use-after-free (patch from Charles Lehner)
-rw-r--r-- | modules/gtk/call_window.c | 7 |
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) |