From 90d3c5b95145c1fa326d1d6d9fa5bcd7b3dedc4c Mon Sep 17 00:00:00 2001 From: Ievgenii Meshcheriakov Date: Thu, 27 Apr 2023 16:29:01 +0200 Subject: QDBusServer: Fix potential crash when private pointer is null Check that the private pointer is not null before attempting to dereference it. This can happen, for example, when a QDBusServer instance was constructed with an empty string as address. Attempting to destroy an object constructed this way was causing a segmentation fault on Linux. Add a test case that attempts to construct a QDBusServer object with an empty string as address to check that this does not cause a segmentation fault anymore. Pick-to: 6.5 6.2 Change-Id: I5fe63134026e2a9f509b61d452285891b1ec624d Reviewed-by: Thiago Macieira --- tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp | 5 +++++ tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h | 2 ++ 2 files changed, 7 insertions(+) (limited to 'tests/auto/dbus') diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp index 09ce947ccc..42e898eda7 100644 --- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp @@ -1412,6 +1412,11 @@ void tst_QDBusConnection::pendingCallWhenDisconnected() #endif } +void tst_QDBusConnection::emptyServerAddress() +{ + QDBusServer server({}, nullptr); +} + QString MyObject::path; QString MyObjectWithoutInterface::path; QString MyObjectWithoutInterface::interface; diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h index 058f4e8115..0aec2aa0bd 100644 --- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h +++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h @@ -115,6 +115,8 @@ private slots: void callVirtualObjectLocal(); void pendingCallWhenDisconnected(); + void emptyServerAddress(); + public: QString serviceName() const { return "org.qtproject.Qt.Autotests.QDBusConnection"; } bool callMethod(const QDBusConnection &conn, const QString &path); -- cgit v1.2.3