diff options
author | Simmo Saan <simmo.saan@gmail.com> | 2019-02-21 16:15:58 +0200 |
---|---|---|
committer | Simmo Saan <simmo.saan@gmail.com> | 2019-02-21 16:15:58 +0200 |
commit | 8ac4a75969ede80c9d3c9900f376c7d6deb71b07 (patch) | |
tree | af90a19057fdd5d78166e25001f4667a94f1e542 | |
parent | 91936ff5831e05d316f8abb5dcb5cd830c46addb (diff) | |
download | weechat-8ac4a75969ede80c9d3c9900f376c7d6deb71b07.zip |
gui: fix use after free bug in /filter del (issue #1309)
Deleting (freeing) a filter also frees its buffers, so refilter must
happen before freeing. Disabling the filter temporarily fixes the bug.
This fix disables the filter before filter_removing signal, though.
-rw-r--r-- | src/core/wee-command.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c index ccbee03d2..aceee8605 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -2399,8 +2399,9 @@ COMMAND_CALLBACK(filter) ptr_filter = gui_filter_search_by_name (argv[2]); if (ptr_filter) { + ptr_filter->enabled = 0; // disable before refilter + gui_filter_all_buffers (ptr_filter); // refilter before free gui_filter_free (ptr_filter); - gui_filter_all_buffers (ptr_filter); gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, _("Filter \"%s\" deleted"), argv[2]); |