From 18867845eb77537c4125e1da4dfcd049e303ee27 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 7 Sep 2023 13:38:23 -0700 Subject: [PATCH] IPC: disallow unknown queries in QNativeIpcKey string form So we can add them in the future but cause older versions of Qt to reject them if they don't know what they are. Pick-to: 6.6 6.6.0 Change-Id: I512648fd617741199e67fffd1782b85935bb832a Reviewed-by: Marc Mutz --- src/corelib/ipc/qtipccommon.cpp | 3 ++- .../auto/corelib/ipc/qnativeipckey/tst_qnativeipckey.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/corelib/ipc/qtipccommon.cpp b/src/corelib/ipc/qtipccommon.cpp index 94238be2fd..37b89ef2ed 100644 --- a/src/corelib/ipc/qtipccommon.cpp +++ b/src/corelib/ipc/qtipccommon.cpp @@ -555,7 +555,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); @@ -564,6 +564,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 7b08e642af..35e5e1172b 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;