1
0
mirror of https://github.com/qt/qtmqtt.git synced 2026-10-25 16:16:26 +00:00

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>
This commit is contained in:
Maurice Kalinowski 2023-11-25 18:40:58 +01:00
parent 95b38eafb5
commit fb417c44dd
2 changed files with 2 additions and 1 deletions

View File

@ -173,7 +173,7 @@ bool QMqttTopicFilter::isValid() const
|| (singleLevelPosition < size - 1 && d->filter.at(singleLevelPosition + 1) != QLatin1Char('/'))) { || (singleLevelPosition < size - 1 && d->filter.at(singleLevelPosition + 1) != QLatin1Char('/'))) {
return false; return false;
} }
singleLevelPosition = d->filter.indexOf(QLatin1Char('#'), singleLevelPosition + 1); singleLevelPosition = d->filter.indexOf(QLatin1Char('+'), singleLevelPosition + 1);
} }
// Shared Subscription syntax // Shared Subscription syntax

View File

@ -47,6 +47,7 @@ void Tst_QMqttTopicFilter::checkValidity()
QVERIFY(!QMqttTopicFilter("a+").isValid()); QVERIFY(!QMqttTopicFilter("a+").isValid());
QVERIFY(!QMqttTopicFilter("+a").isValid()); QVERIFY(!QMqttTopicFilter("+a").isValid());
QVERIFY(!QMqttTopicFilter("++").isValid()); QVERIFY(!QMqttTopicFilter("++").isValid());
QVERIFY(!QMqttTopicFilter("a/+/b/++/c").isValid());
QVERIFY(!QMqttTopicFilter(QString(3, QChar(QChar::Null))).isValid()); QVERIFY(!QMqttTopicFilter(QString(3, QChar(QChar::Null))).isValid());