[evolution] Bug 767228 - Use-after-free in MessageList rebuild under clear_tree()
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Bug 767228 - Use-after-free in MessageList rebuild under clear_tree()
- Date: Mon, 28 Nov 2016 15:56:28 +0000 (UTC)
commit 26537ec8d04f002a1171cb52e412937b214e7099
Author: Milan Crha <mcrha redhat com>
Date: Mon Nov 28 16:51:48 2016 +0100
Bug 767228 - Use-after-free in MessageList rebuild under clear_tree()
src/e-util/e-tree-table-adapter.c | 9 +++++++++
src/e-util/e-tree-table-adapter.h | 2 ++
src/mail/message-list.c | 2 ++
3 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/src/e-util/e-tree-table-adapter.c b/src/e-util/e-tree-table-adapter.c
index 6fa3974..4ce10b0 100644
--- a/src/e-util/e-tree-table-adapter.c
+++ b/src/e-util/e-tree-table-adapter.c
@@ -1659,3 +1659,12 @@ e_tree_table_adapter_node_get_next (ETreeTableAdapter *etta,
return NULL;
}
+void
+e_tree_table_adapter_clear_nodes_silent (ETreeTableAdapter *etta)
+{
+ g_return_if_fail (E_IS_TREE_TABLE_ADAPTER (etta));
+
+ if (etta->priv->root)
+ kill_gnode (etta->priv->root, etta);
+ resize_map (etta, 0);
+}
diff --git a/src/e-util/e-tree-table-adapter.h b/src/e-util/e-tree-table-adapter.h
index d9926f5..62182cf 100644
--- a/src/e-util/e-tree-table-adapter.h
+++ b/src/e-util/e-tree-table-adapter.h
@@ -133,6 +133,8 @@ xmlDoc * e_tree_table_adapter_save_expanded_state_xml
void e_tree_table_adapter_load_expanded_state_xml
(ETreeTableAdapter *etta,
xmlDoc *doc);
+void e_tree_table_adapter_clear_nodes_silent
+ (ETreeTableAdapter *etta);
G_END_DECLS
diff --git a/src/mail/message-list.c b/src/mail/message-list.c
index 52cd24b..718b96a 100644
--- a/src/mail/message-list.c
+++ b/src/mail/message-list.c
@@ -3838,6 +3838,8 @@ clear_tree (MessageList *message_list,
message_list, message_list->priv->tree_model_root);
}
+ e_tree_table_adapter_clear_nodes_silent (e_tree_get_table_adapter (E_TREE (message_list)));
+
/* Create a new placeholder root node. */
message_list_tree_model_insert (message_list, NULL, 0, NULL);
g_warn_if_fail (message_list->priv->tree_model_root != NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]