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