From b39de8919e54b705e2add4f94230f70e9c51be2f Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Mon, 27 Jan 2014 15:30:52 +0100
Subject: [PATCH] Check if debuggers read from settings files are executable.

Change-Id: I412d3fdf228bcf8948d8247363bf3b034cbb788c
Reviewed-by: Mehdi Fekari <mfekari@blackberry.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
---
 src/plugins/debugger/debuggeritemmanager.cpp | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp
index 59c3adb0461..ae30219d9f2 100644
--- a/src/plugins/debugger/debuggeritemmanager.cpp
+++ b/src/plugins/debugger/debuggeritemmanager.cpp
@@ -92,11 +92,19 @@ static void readDebuggers(const FileName &fileName, bool isSystem)
             // SDK debuggers are always considered to be up-to-date, so no need to recheck them.
         } else {
             // User settings.
-            if (item.isAutoDetected() && (!item.isValid() || item.engineType() == NoEngineType)) {
-                qWarning() << QString::fromLatin1("DebuggerItem \"%1\" (%2) dropped since it is not valid")
-                              .arg(item.command().toString()).arg(item.id().toString());
-                continue;
+            if (item.isAutoDetected()) {
+                if (!item.isValid() || item.engineType() == NoEngineType) {
+                    qWarning() << QString::fromLatin1("DebuggerItem \"%1\" (%2) read from \"%3\" dropped since it is not valid.")
+                                  .arg(item.command().toUserOutput(), item.id().toString(), fileName.toUserOutput());
+                    continue;
+                }
+                if (!item.command().toFileInfo().isExecutable()) {
+                    qWarning() << QString::fromLatin1("DebuggerItem \"%1\" (%2) read from \"%3\" dropped since the command is not executable.")
+                                  .arg(item.command().toUserOutput(), item.id().toString(), fileName.toUserOutput());
+                    continue;
+                }
             }
+
         }
         DebuggerItemManager::registerDebugger(item);
     }
-- 
GitLab