[evolution] Bug 767228 - Use-after-free in MessageList rebuild under clear_tree() ][



commit 402b24dbcd9a844fce9fe2ca1479b997b39aa1ab
Author: Milan Crha <mcrha redhat com>
Date:   Mon Nov 28 17:58:08 2016 +0100

    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 4ce10b0..8430476 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 718b96a..ad6b1e3 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 */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]