summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-11-08 13:27:47 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-11-10 21:08:30 +0000
commit505c50ce8acb4785811b803752bb9e1cf1feb116 (patch)
tree97b1ccc3bfce30e73fbfbcb1fcddf4834a835ac2
parentf0693acc193cfd147708cf190fd706df1e7c6765 (diff)
Fix a crash due to null QHostAddress in the TCP/IP backend
When called in boot phases of embedded devices, host name resolution can fail, resulting in an assert/crash. Bail out with a warning instead. Pick-to: 6.5 6.2 5.15 Fixes: QTBUG-116151 Change-Id: I1d8465bd35ff250d3a4b9dbde53bd6634ae70fc6 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> (cherry picked from commit 65dbc006c81ccaea6af5f0b1e2425cfdb2158325) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/remoteobjects/qconnection_tcpip_backend.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/remoteobjects/qconnection_tcpip_backend.cpp b/src/remoteobjects/qconnection_tcpip_backend.cpp
index b8f584d..a493c03 100644
--- a/src/remoteobjects/qconnection_tcpip_backend.cpp
+++ b/src/remoteobjects/qconnection_tcpip_backend.cpp
@@ -45,14 +45,15 @@ void TcpClientIo::connectToServer()
{
if (isOpen())
return;
- QHostAddress address(url().host());
- if (address.isNull()) {
- const QList<QHostAddress> addresses = QHostInfo::fromName(url().host()).addresses();
- Q_ASSERT_X(addresses.size() >= 1, Q_FUNC_INFO, url().toString().toLatin1().data());
- address = addresses.first();
- }
-
- m_socket->connectToHost(address, quint16(url().port()));
+ const QString &host = url().host();
+ QHostAddress address(host);
+ if (address.isNull())
+ address = QHostInfo::fromName(host).addresses().value(0);
+
+ if (address.isNull())
+ qWarning("connectToServer(): Failed to resolve host %s", qUtf8Printable(host));
+ else
+ m_socket->connectToHost(address, url().port());
}
bool TcpClientIo::isOpen() const