diff --git a/src/corelib/ipc/qtipccommon.cpp b/src/corelib/ipc/qtipccommon.cpp index 06c6932f509..190cb8c1fdc 100644 --- a/src/corelib/ipc/qtipccommon.cpp +++ b/src/corelib/ipc/qtipccommon.cpp @@ -553,7 +553,7 @@ QNativeIpcKey QNativeIpcKey::fromString(const QString &text) Type invalidType = {}; Type type = stringToType(u.scheme()); if (type == invalidType || !u.isValid() || !u.userInfo().isEmpty() || !u.host().isEmpty() - || u.port() != -1) + || u.port() != -1 || u.hasQuery()) return QNativeIpcKey(invalidType); QNativeIpcKey result(QString(), type); @@ -562,6 +562,7 @@ QNativeIpcKey QNativeIpcKey::fromString(const QString &text) // decode the payload result.setNativeKey(u.path()); + return result; } diff --git a/tests/auto/corelib/ipc/qnativeipckey/tst_qnativeipckey.cpp b/tests/auto/corelib/ipc/qnativeipckey/tst_qnativeipckey.cpp index 7b08e642afd..35e5e1172b6 100644 --- a/tests/auto/corelib/ipc/qnativeipckey/tst_qnativeipckey.cpp +++ b/tests/auto/corelib/ipc/qnativeipckey/tst_qnativeipckey.cpp @@ -280,12 +280,14 @@ void tst_QNativeIpcKey::fromString_data() << "posix:%C4%80.%E2%80%80.%F0%90%80%80" << QNativeIpcKey(u"\u0100.\u2000.\U00010000"_s, QNativeIpcKey::Type::PosixRealtime); - // query and fragment are ignored - QTest::addRow("with-query") << "posix:/foo?bar" << valid; + // fragments are ignored QTest::addRow("with-fragment") << "posix:/foo#bar" << valid; - QTest::addRow("with-queryfragment") << "posix:/foo?bar#baz" << valid; QTest::addRow("with-fragmentquery") << "posix:/foo#bar?baz" << valid; + // but unknown query items are not + QTest::addRow("with-query") << "posix:/foo?bar" << invalid; + QTest::addRow("with-queryfragment") << "posix:/foo?bar#baz" << invalid; + // add some ones that won't parse well QTest::addRow("positive-number") << "81" << invalid; QTest::addRow("negative-number") << "-81" << invalid;