From c16324061117b2724b2c50eb109b5ab9c13e903d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 5 Dec 2016 15:29:03 +0100 Subject: [PATCH] QmlDesigner: Prevent possible nullptr access Change-Id: I90f131526f97fa879cf9e6428547e6e8ed9aa936 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/documentmanager.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp index 1caa8c433d2..12226f68ed5 100644 --- a/src/plugins/qmldesigner/documentmanager.cpp +++ b/src/plugins/qmldesigner/documentmanager.cpp @@ -430,9 +430,10 @@ void DocumentManager::findPathToIsoProFile(bool *iconResourceFileAlreadyExists, bool DocumentManager::isoProFileSupportsAddingExistingFiles(const QString &resourceFileProPath) { ProjectExplorer::Node *node = ProjectExplorer::SessionManager::nodeForFile(Utils::FileName::fromString(resourceFileProPath)); - ProjectExplorer::ProjectNode *projectNode = dynamic_cast(node->parentFolderNode()); - - if (!projectNode->supportedActions(projectNode).contains(ProjectExplorer::AddExistingFile)) { + if (!node || !node->parentFolderNode()) + return false; + ProjectExplorer::ProjectNode *projectNode = node->parentFolderNode()->asProjectNode(); + if (!projectNode || !projectNode->supportedActions(projectNode).contains(ProjectExplorer::AddExistingFile)) { qCWarning(documentManagerLog) << "Project" << projectNode->displayName() << "does not support adding existing files"; return false; } @@ -443,7 +444,11 @@ bool DocumentManager::isoProFileSupportsAddingExistingFiles(const QString &resou bool DocumentManager::addResourceFileToIsoProject(const QString &resourceFileProPath, const QString &resourceFilePath) { ProjectExplorer::Node *node = ProjectExplorer::SessionManager::nodeForFile(Utils::FileName::fromString(resourceFileProPath)); - ProjectExplorer::ProjectNode *projectNode = dynamic_cast(node->parentFolderNode()); + if (!node || !node->parentFolderNode()) + return false; + ProjectExplorer::ProjectNode *projectNode = node->parentFolderNode()->asProjectNode(); + if (!projectNode) + return false; if (!projectNode->addFiles(QStringList() << resourceFilePath)) { qCWarning(documentManagerLog) << "Failed to add resource file to" << projectNode->displayName();