diff options
author | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2023-11-25 18:40:58 +0100 |
---|---|---|
committer | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2023-11-30 09:57:26 +0100 |
commit | fb417c44dd8838eb7ab3ebe5c3f4dce91ce1025b (patch) | |
tree | 6c61635fb49cc5b17d0ee5c52a552be6c896e41e | |
parent | 95b38eafb514832a951a5c67f3a2af9ff8fb83de (diff) |
Fix topic wildcard checks
A topic can have multiple '+' wildcards, but isValid was searching for
the wrong wildcard at the second instance.
Pick-to: 6.6 6.5 6.2
Change-Id: I83e3fa258ef01b26388c0e6fd8c17a0a140ab75a
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
-rw-r--r-- | src/mqtt/qmqtttopicfilter.cpp | 2 | ||||
-rw-r--r-- | tests/auto/qmqtttopicfilter/tst_qmqtttopicfilter.cpp | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/mqtt/qmqtttopicfilter.cpp b/src/mqtt/qmqtttopicfilter.cpp index 6c96ff8..658b1d8 100644 --- a/src/mqtt/qmqtttopicfilter.cpp +++ b/src/mqtt/qmqtttopicfilter.cpp @@ -173,7 +173,7 @@ bool QMqttTopicFilter::isValid() const || (singleLevelPosition < size - 1 && d->filter.at(singleLevelPosition + 1) != QLatin1Char('/'))) { return false; } - singleLevelPosition = d->filter.indexOf(QLatin1Char('#'), singleLevelPosition + 1); + singleLevelPosition = d->filter.indexOf(QLatin1Char('+'), singleLevelPosition + 1); } // Shared Subscription syntax diff --git a/tests/auto/qmqtttopicfilter/tst_qmqtttopicfilter.cpp b/tests/auto/qmqtttopicfilter/tst_qmqtttopicfilter.cpp index dcd1c2f..e69299e 100644 --- a/tests/auto/qmqtttopicfilter/tst_qmqtttopicfilter.cpp +++ b/tests/auto/qmqtttopicfilter/tst_qmqtttopicfilter.cpp @@ -47,6 +47,7 @@ void Tst_QMqttTopicFilter::checkValidity() QVERIFY(!QMqttTopicFilter("a+").isValid()); QVERIFY(!QMqttTopicFilter("+a").isValid()); QVERIFY(!QMqttTopicFilter("++").isValid()); + QVERIFY(!QMqttTopicFilter("a/+/b/++/c").isValid()); QVERIFY(!QMqttTopicFilter(QString(3, QChar(QChar::Null))).isValid()); |