summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrett Stottlemyer <bstottle@ford.com>2021-03-07 08:03:33 -0500
committerBrett Stottlemyer <bstottle@ford.com>2021-03-09 07:22:30 -0500
commite910e445a4860467bc99e2bb446978fa790815dd (patch)
tree4c6da33767b7f217d134a625ab4ac3b2df3f3b73 /src
parentf29bbb6e17a9308a073c5e74057bbbe9635307e0 (diff)
ExternalIODevice fixes
Make sure the input QIODevice is valid and the disconnect signal (if available) is connected. Task-number: QTBUG-84640 Pick-to: 5.15 5.12 Change-Id: I9e65dc903ce0e92da4f4a1e07fd5d6b66815e2a4 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Diffstat (limited to 'src')
-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 0742eb5..1dc6cfc 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 5841534..fe17ad8 100644
--- a/src/remoteobjects/qremoteobjectnode.cpp
+++ b/src/remoteobjects/qremoteobjectnode.cpp
@@ -2289,6 +2289,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);
@@ -2569,6 +2573,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);