diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp index 78338aa0545..84ce5ed78dc 100644 --- a/src/dbus/qdbusutil.cpp +++ b/src/dbus/qdbusutil.cpp @@ -407,6 +407,8 @@ namespace QDBusUtil return isValidUniqueConnectionName(busName); const auto parts = QStringView{busName}.split(u'.'); + if (parts.size() < 2) + return false; for (QStringView part : parts) { if (part.isEmpty()) return false; diff --git a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp index 355a65bc594..82dc9059e02 100644 --- a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp +++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp @@ -938,6 +938,10 @@ void tst_QDBusMarshall::sendCallErrors_data() << "org.freedesktop.DBus.Error.UnknownMethod" << "Method \"ping\" with signature \"\" on interface \"org.qtproject.autotests.qpong\" doesn't exist\n" << (const char*)0; + QTest::newRow("invalid-service-single-label") << "service" << objectPath << interfaceName << "ping" << QVariantList() + << "org.qtproject.QtDBus.Error.InvalidService" + << "Invalid service name: service" << ""; + QTest::newRow("invalid-service") << "this isn't valid" << objectPath << interfaceName << "ping" << QVariantList() << "org.qtproject.QtDBus.Error.InvalidService" << "Invalid service name: this isn't valid" << "";