From 402b24dbcd9a844fce9fe2ca1479b997b39aa1ab Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 28 Nov 2016 17:58:08 +0100 Subject: [PATCH] Bug 767228 - Use-after-free in MessageList rebuild under clear_tree() ][ Some missed changes... --- src/e-util/e-tree-table-adapter.c | 9 ++++++--- src/mail/message-list.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/e-util/e-tree-table-adapter.c b/src/e-util/e-tree-table-adapter.c index 4ce10b0311..84304769ba 100644 --- a/src/e-util/e-tree-table-adapter.c +++ b/src/e-util/e-tree-table-adapter.c @@ -948,6 +948,7 @@ tree_table_adapter_value_at (ETableModel *etm, gint row) { ETreeTableAdapter *etta = (ETreeTableAdapter *) etm; + ETreePath path; switch (col) { case -1: @@ -959,9 +960,11 @@ tree_table_adapter_value_at (ETableModel *etm, case -3: return etta; default: - return e_tree_model_value_at ( - etta->priv->source_model, - e_tree_table_adapter_node_at_row (etta, row), col); + path = e_tree_table_adapter_node_at_row (etta, row); + if (!path) + return NULL; + + return e_tree_model_value_at (etta->priv->source_model, path, col); } } diff --git a/src/mail/message-list.c b/src/mail/message-list.c index 718b96a6b6..ad6b1e396f 100644 --- a/src/mail/message-list.c +++ b/src/mail/message-list.c @@ -3180,7 +3180,7 @@ message_list_value_at (ETreeModel *tree_model, message_list = MESSAGE_LIST (tree_model); - if (G_NODE_IS_ROOT ((GNode *) path)) + if (!path || G_NODE_IS_ROOT ((GNode *) path)) return NULL; /* retrieve the message information array */