From 11d9355cc532297c2993b2de8c1827682591d517 Mon Sep 17 00:00:00 2001
From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
Date: Thu, 26 Mar 2015 16:11:41 -0400
Subject: [PATCH] collection: Fix potential invalid memory access

Refs #69290
---
 src/collectioninterface.hpp      | 1 +
 src/collectionmodel.cpp          | 2 +-
 src/fallbackpersoncollection.cpp | 2 +-
 src/private/collectionmodel_p.h  | 2 +-
 4 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/collectioninterface.hpp b/src/collectioninterface.hpp
index 29a66714..3ea552c1 100644
--- a/src/collectioninterface.hpp
+++ b/src/collectioninterface.hpp
@@ -22,6 +22,7 @@ template<typename T> class ItemBase;
 
 class CollectionInterfacePrivate {
 public:
+   CollectionInterfacePrivate() : m_pParent(nullptr){}
 
    ///The backend parent of nullptr
    CollectionInterface*          m_pParent    ;
diff --git a/src/collectionmodel.cpp b/src/collectionmodel.cpp
index 2b484bd3..0898b576 100644
--- a/src/collectionmodel.cpp
+++ b/src/collectionmodel.cpp
@@ -220,7 +220,7 @@ QModelIndex CollectionModel::parent( const QModelIndex& idx ) const
 
 QModelIndex CollectionModel::index( int row, int column, const QModelIndex& parent ) const
 {
-   if (parent.isValid()) {
+   if (parent.isValid() && parent.model() == this && row < rowCount(parent)) {
       CollectionModelPrivate::ProxyItem* parentItem = static_cast<CollectionModelPrivate::ProxyItem*>(parent.internalPointer());
       CollectionModelPrivate::ProxyItem* item = nullptr;
       if (row < parentItem->m_Children.size())
diff --git a/src/fallbackpersoncollection.cpp b/src/fallbackpersoncollection.cpp
index cd069025..a91d5ff1 100644
--- a/src/fallbackpersoncollection.cpp
+++ b/src/fallbackpersoncollection.cpp
@@ -173,7 +173,7 @@ QString FallbackPersonCollection::name () const
 
 QString FallbackPersonCollection::category () const
 {
-   return QObject::tr("Contacts");
+   return QObject::tr("Contact");
 }
 
 QVariant FallbackPersonCollection::icon() const
diff --git a/src/private/collectionmodel_p.h b/src/private/collectionmodel_p.h
index 4278746e..f0fc85f6 100644
--- a/src/private/collectionmodel_p.h
+++ b/src/private/collectionmodel_p.h
@@ -43,7 +43,7 @@ public:
     * index have to be implemented.
     */
    struct ProxyItem {
-      ProxyItem() : parent(nullptr),col(1),row(0),collection(nullptr),manageableCount(0){}
+      ProxyItem() : parent(nullptr),col(0),row(0),collection(nullptr),manageableCount(0){}
       int row;
       int col;
       CollectionInterface* collection;
-- 
GitLab