summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Stottlemyer <bstottle@ford.com>2021-03-07 08:03:33 -0500
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-03-09 14:15:59 +0000
commitaee2f28306491f25b7159c58904e708aaef4205b (patch)
tree24af11f5a04de95517792ec61027a7fa9637c01d
parent42ef6bf079bc5247e72f88dd61d24d9e11c9940e (diff)
ExternalIODevice fixes
Make sure the input QIODevice is valid and the disconnect signal (if available) is connected. Task-number: QTBUG-84640 Change-Id: I9e65dc903ce0e92da4f4a1e07fd5d6b66815e2a4 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> (cherry picked from commit e910e445a4860467bc99e2bb446978fa790815dd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/remoteobjects/qconnectionfactories.cpp2
-rw-r--r--src/remoteobjects/qremoteobjectnode.cpp8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/remoteobjects/qconnectionfactories.cpp b/src/remoteobjects/qconnectionfactories.cpp
index f1091fa..9ddea61 100644
--- a/src/remoteobjects/qconnectionfactories.cpp
+++ b/src/remoteobjects/qconnectionfactories.cpp
@@ -234,7 +234,7 @@ ExternalIoDevice::ExternalIoDevice(QIODevice *device, QObject *parent)
connect(m_device.data(), &QIODevice::aboutToClose, this, [this]() { this->m_isClosing = true; });
connect(m_device.data(), &QIODevice::readyRead, this, &ExternalIoDevice::readyRead);
auto meta = device->metaObject();
- if (-1 == meta->indexOfSignal(SIGNAL(disconnected())))
+ if (-1 != meta->indexOfSignal(SIGNAL(disconnected())))
connect(m_device.data(), SIGNAL(disconnected()), this, SIGNAL(disconnected()));
}
diff --git a/src/remoteobjects/qremoteobjectnode.cpp b/src/remoteobjects/qremoteobjectnode.cpp
index 6e9d25f..e918b10 100644
--- a/src/remoteobjects/qremoteobjectnode.cpp
+++ b/src/remoteobjects/qremoteobjectnode.cpp
@@ -2068,6 +2068,10 @@ bool QRemoteObjectNode::connectToNode(const QUrl &address)
void QRemoteObjectNode::addClientSideConnection(QIODevice *ioDevice)
{
Q_D(QRemoteObjectNode);
+ if (!ioDevice || !ioDevice->isOpen()) {
+ qWarning() << "A null or closed QIODevice was passed to addClientSideConnection(). Ignoring.";
+ return;
+ }
ExternalIoDevice *device = new ExternalIoDevice(ioDevice, this);
connect(device, &IoDeviceBase::readyRead, this, [d, device]() {
d->onClientRead(device);
@@ -2317,6 +2321,10 @@ bool QRemoteObjectHostBase::disableRemoting(QObject *remoteObject)
void QRemoteObjectHostBase::addHostSideConnection(QIODevice *ioDevice)
{
Q_D(QRemoteObjectHostBase);
+ if (!ioDevice || !ioDevice->isOpen()) {
+ qWarning() << "A null or closed QIODevice was passed to addHostSideConnection(). Ignoring.";
+ return;
+ }
if (!d->remoteObjectIo)
d->remoteObjectIo = new QRemoteObjectSourceIo(this);
ExternalIoDevice *device = new ExternalIoDevice(ioDevice, this);