Rex Dieter 41c443
From a967936a34b2f17e002f9d69dae3e74b0ef20799 Mon Sep 17 00:00:00 2001
Rex Dieter 41c443
From: David Rosca <nowrep@gmail.com>
Rex Dieter 41c443
Date: Mon, 12 Jan 2015 14:19:42 +0100
Rex Dieter 41c443
Subject: [PATCH 17/20] filereceiver: Fix crash when sending device is null
Rex Dieter 41c443
Rex Dieter 41c443
BUG: 342581
Rex Dieter 41c443
---
Rex Dieter 41c443
 src/daemon/kded/filereceiver/receivefilejob.cpp | 19 +++++++++++++++----
Rex Dieter 41c443
 1 file changed, 15 insertions(+), 4 deletions(-)
Rex Dieter 41c443
Rex Dieter 41c443
diff --git a/src/daemon/kded/filereceiver/receivefilejob.cpp b/src/daemon/kded/filereceiver/receivefilejob.cpp
Rex Dieter 41c443
index daf6c57..1de755a 100644
Rex Dieter 41c443
--- a/src/daemon/kded/filereceiver/receivefilejob.cpp
Rex Dieter 41c443
+++ b/src/daemon/kded/filereceiver/receivefilejob.cpp
Rex Dieter 41c443
@@ -85,20 +85,31 @@ void ReceiveFileJob::init()
Rex Dieter 41c443
             SLOT(transferPropertiesChanged(QString,QVariantMap,QStringList)));
Rex Dieter 41c443
 
Rex Dieter 41c443
     m_session = new org::bluez::obex::Session1("org.bluez.obex", m_transfer->session().path(), QDBusConnection::sessionBus(), this);
Rex Dieter 41c443
-    kDebug(dblue()) << m_session->destination();
Rex Dieter 41c443
 
Rex Dieter 41c443
-    Device* device = Manager::self()->usableAdapter()->deviceForAddress(m_session->destination());
Rex Dieter 41c443
-    kDebug(dblue()) << device;
Rex Dieter 41c443
+    kDebug(dblue()) << "Source:" << m_session->source();
Rex Dieter 41c443
+    kDebug(dblue()) << "Destination:" << m_session->destination();
Rex Dieter 41c443
+
Rex Dieter 41c443
+    Device *device = 0;
Rex Dieter 41c443
+    bool isDeviceTrusted = false;
Rex Dieter 41c443
+
Rex Dieter 41c443
+    Q_FOREACH (Adapter *adapter, Manager::self()->adapters()) {
Rex Dieter 41c443
+        if (adapter->address() == m_session->source()) {
Rex Dieter 41c443
+            device = adapter->deviceForAddress(m_session->destination());
Rex Dieter 41c443
+            break;
Rex Dieter 41c443
+        }
Rex Dieter 41c443
+    }
Rex Dieter 41c443
 
Rex Dieter 41c443
     m_deviceName = m_session->destination();
Rex Dieter 41c443
+
Rex Dieter 41c443
     if (device) {
Rex Dieter 41c443
         kDebug(dblue()) << device->name();
Rex Dieter 41c443
         m_deviceName = device->name();
Rex Dieter 41c443
+        isDeviceTrusted = device->isTrusted();
Rex Dieter 41c443
     }
Rex Dieter 41c443
 
Rex Dieter 41c443
     FileReceiverSettings::self()->readConfig();
Rex Dieter 41c443
     kDebug(dblue()) << "Auto Accept: " << FileReceiverSettings::self()->autoAccept();
Rex Dieter 41c443
-    if (FileReceiverSettings::self()->autoAccept() == 1 && device->isTrusted()) {
Rex Dieter 41c443
+    if (FileReceiverSettings::self()->autoAccept() == 1 && isDeviceTrusted) {
Rex Dieter 41c443
         slotAccept();
Rex Dieter 41c443
         return;
Rex Dieter 41c443
     } else if (FileReceiverSettings::self()->autoAccept() == 2) {
Rex Dieter 41c443
-- 
Rex Dieter 41c443
2.1.0
Rex Dieter 41c443