Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package qt6-connectivity for
openSUSE:Factory checked in at 2026-05-28 17:24:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-connectivity (Old)
and /work/SRC/openSUSE:Factory/.qt6-connectivity.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-connectivity"
Thu May 28 17:24:32 2026 rev:39 rq:1355415 version:6.11.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-connectivity/qt6-connectivity.changes
2026-03-28 20:12:45.075937599 +0100
+++
/work/SRC/openSUSE:Factory/.qt6-connectivity.new.1937/qt6-connectivity.changes
2026-05-28 17:25:12.839434322 +0200
@@ -1,0 +2,6 @@
+Thu May 14 14:54:40 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.11.1
+ https://www.qt.io/blog/qt-6.11.1-released
+
+-------------------------------------------------------------------
Old:
----
qtconnectivity-everywhere-src-6.11.0.tar.xz
New:
----
qtconnectivity-everywhere-src-6.11.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qt6-connectivity.spec ++++++
--- /var/tmp/diff_new_pack.N80lQ6/_old 2026-05-28 17:25:13.799474061 +0200
+++ /var/tmp/diff_new_pack.N80lQ6/_new 2026-05-28 17:25:13.803474227 +0200
@@ -16,7 +16,7 @@
#
-%define real_version 6.11.0
+%define real_version 6.11.1
%define short_version 6.11
%define tar_name qtconnectivity-everywhere-src
%define tar_suffix %{nil}
@@ -30,7 +30,7 @@
%global __requires_exclude qt6qmlimport\\((HeartRateGame|NdefEditor.*)\\)
#
Name: qt6-connectivity%{?pkg_suffix}
-Version: 6.11.0
+Version: 6.11.1
Release: 0
Summary: Qt 6 connectivity tools and libraries
License: GPL-2.0-only OR LGPL-3.0-only OR GPL-3.0-only
++++++ qtconnectivity-everywhere-src-6.11.0.tar.xz ->
qtconnectivity-everywhere-src-6.11.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.11.0/.cmake.conf
new/qtconnectivity-everywhere-src-6.11.1/.cmake.conf
--- old/qtconnectivity-everywhere-src-6.11.0/.cmake.conf 2026-03-10
06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/.cmake.conf 2026-05-08
03:18:46.000000000 +0200
@@ -1,6 +1,7 @@
-set(QT_REPO_MODULE_VERSION "6.11.0")
+set(QT_REPO_MODULE_VERSION "6.11.1")
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
set(QT_EXTRA_INTERNAL_TARGET_DEFINES
+ "QT_NO_CONTEXTLESS_CONNECT=1"
"QT_NO_FOREACH=1"
"QT_NO_QASCONST=1"
"QT_NO_QSNPRINTF=1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.11.0/.tag
new/qtconnectivity-everywhere-src-6.11.1/.tag
--- old/qtconnectivity-everywhere-src-6.11.0/.tag 2026-03-10
06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/.tag 2026-05-08
03:18:46.000000000 +0200
@@ -1 +1 @@
-102a73c48c97b503d33add4a95b0cdf8d1363740
+933e87d8a0ceda506d384b097276336faf995e9f
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/coin/axivion/start_analysis.sh
new/qtconnectivity-everywhere-src-6.11.1/coin/axivion/start_analysis.sh
--- old/qtconnectivity-everywhere-src-6.11.0/coin/axivion/start_analysis.sh
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/coin/axivion/start_analysis.sh
2026-05-08 03:18:46.000000000 +0200
@@ -14,6 +14,24 @@
cd "$CAFECC_BASEPATH"
BAUHAUS_IR_COMPRESSION=none COMPILE_ONLY=1 cmake -G Ninja
-DAXIVION_ANALYSIS_TOOLCHAIN_FILE=/home/qt/bauhaus-suite/profiles/cmake/axivion-launcher-toolchain.cmake
-DCMAKE_PREFIX_PATH=/home/qt/work/qt/qtconnectivity/build
-DCMAKE_PROJECT_INCLUDE_BEFORE=/home/qt/bauhaus-suite/profiles/cmake/axivion-before-project-hook.cmake
-B build -S . --fresh
cmake --build build -j4
+
+ROOT_DIR=src
+MAGIC="Qt-Security score:critical"
+
+INCLUDE_FILES=""
+
+while IFS= read -r file; do
+ if [ -z "$INCLUDE_FILES" ]; then
+ INCLUDE_FILES="$file"
+ else
+ INCLUDE_FILES="$INCLUDE_FILES:$file"
+ fi
+done <<EOF
+$(grep -rl "$MAGIC" "$ROOT_DIR")
+EOF
+
+export INCLUDE_FILES
+
for MODULE in qtnfc qtbluetooth; do
export MODULE
export PLUGINS=""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/dependencies.yaml
new/qtconnectivity-everywhere-src-6.11.1/dependencies.yaml
--- old/qtconnectivity-everywhere-src-6.11.0/dependencies.yaml 2026-03-10
06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/dependencies.yaml 2026-05-08
03:18:46.000000000 +0200
@@ -1,7 +1,7 @@
dependencies:
../qtbase:
- ref: 8ba7ea4b77a4b8f1948760221e264917ddc9e1c8
+ ref: 59c81a3c2247b821b9b84b4eb8d939b77e07e276
required: true
../qtdeclarative:
- ref: e602a097ca314e9610b1fd3b7dbfa467a868731a
+ ref: a02bed441965ee1f18f856352c7d5ee5ba35d795
required: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/CMakeLists.txt
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/CMakeLists.txt
--- old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/CMakeLists.txt
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/CMakeLists.txt
2026-05-08 03:18:46.000000000 +0200
@@ -35,8 +35,6 @@
qlowenergyserviceprivate.cpp qlowenergyserviceprivate_p.h
qprivatelinearbuffer_p.h
qtbluetoothglobal.h qtbluetoothglobal_p.h
- DEFINES
- QT_NO_CONTEXTLESS_CONNECT
LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluetoothmanagement.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluetoothmanagement.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluetoothmanagement.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluetoothmanagement.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -184,7 +184,8 @@
break;
const MgmtHdr *hdr = reinterpret_cast<const
MgmtHdr*>(data.constData());
- const auto nextPackageSize = qsizetype(qFromLittleEndian(hdr->length)
+ sizeof(MgmtHdr));
+ const size_t nextPackageDataSize = qFromLittleEndian(hdr->length);
+ const auto nextPackageSize = qsizetype(nextPackageDataSize +
sizeof(MgmtHdr));
const qsizetype remainingPackageSize = data.size() - nextPackageSize;
if (data.size() < nextPackageSize)
@@ -193,18 +194,20 @@
switch (static_cast<EventCode>(qFromLittleEndian(hdr->cmdCode))) {
case EventCode::DeviceFoundEvent:
{
- const MgmtEventDeviceFound *event = reinterpret_cast<const
MgmtEventDeviceFound*>
- (data.constData() +
sizeof(MgmtHdr));
-
- if (event->type == BDADDR_LE_RANDOM) {
- const bdaddr_t address = event->bdaddr;
- quint64 bdaddr;
-
- convertAddress(address.b, &bdaddr);
- const QBluetoothAddress qtAddress(bdaddr);
- qCDebug(QT_BT_BLUEZ) << "BluetoothManagement: found random
device"
- << qtAddress;
- processRandomAddressFlagInformation(qtAddress);
+ if (nextPackageDataSize >= sizeof(MgmtEventDeviceFound)) {
+ const MgmtEventDeviceFound *event = reinterpret_cast<const
MgmtEventDeviceFound*>
+ (data.constData() +
sizeof(MgmtHdr));
+
+ if (event->type == BDADDR_LE_RANDOM) {
+ const bdaddr_t address = event->bdaddr;
+ quint64 bdaddr;
+
+ convertAddress(address.b, &bdaddr);
+ const QBluetoothAddress qtAddress(bdaddr);
+ qCDebug(QT_BT_BLUEZ) << "BluetoothManagement: found random
device"
+ << qtAddress;
+ processRandomAddressFlagInformation(qtAddress);
+ }
}
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluez5_helper.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluez5_helper.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluez5_helper.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluez5_helper.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -188,6 +188,7 @@
auto determineBinaryVersion = [](const QString &binary) ->
QVersionNumber {
QProcess process;
+ // AXIVION Next Line Qt-Security-QProcessStart: expected
behavior
process.start(binary, {QStringLiteral("--version")});
process.waitForFinished();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluezperipheralapplication.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluezperipheralapplication.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluezperipheralapplication.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluezperipheralapplication.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -154,7 +154,8 @@
m_services.insert(serviceHandle, service);
// Add included services
- for (const auto includedService : serviceData.includedServices()) {
+ const auto includedServices = serviceData.includedServices();
+ for (const auto includedService : includedServices) {
// As per Qt documentation the included service must have been added
earlier
for (const auto s : std::as_const(m_services)) {
if (QBluetoothUuid(s->uuid) == includedService->serviceUuid()) {
@@ -165,7 +166,8 @@
// Set characteristics and their descriptors
quint16 characteristicOrdinal{0};
- for (const auto& characteristicData : serviceData.characteristics()) {
+ const auto characteristics = serviceData.characteristics();
+ for (const auto &characteristicData : characteristics) {
auto characteristicHandle = handleForCharacteristic(
characteristicData.uuid(), servicePrivate);
QtBluezPeripheralCharacteristic* characteristic =
@@ -179,7 +181,8 @@
this,
&QtBluezPeripheralApplication::remoteDeviceAccessEvent);
quint16 descriptorOrdinal{0};
- for (const auto& descriptorData : characteristicData.descriptors()) {
+ const auto descriptors = characteristicData.descriptors();
+ for (const auto &descriptorData : descriptors) {
// With bluez we don't use the CCCD user has provided, because
Bluez
// generates it if 'notify/indicate' flag is set. Similarly the
extended properties
// descriptor is generated by Bluez if the related flags are set.
Using the application
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluezperipheralobjects.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluezperipheralobjects.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/bluezperipheralobjects.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/bluezperipheralobjects.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -340,7 +340,8 @@
// describing them. Bluez will generate the actual descriptor based on
these
// flags. For clarity: the 'extended-properties' token mentioned in
the Bluez
// API is implied by these flags.
- for (const auto& descriptor : data.descriptors()) {
+ const auto descriptors = data.descriptors();
+ for (const auto &descriptor : descriptors) {
// Core Bluetooth v5.3 Vol 3, Part G, 3.3.3.1
if (descriptor.uuid()
==
QBluetoothUuid::DescriptorType::CharacteristicExtendedProperties
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/hcimanager.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/hcimanager.cpp
--- old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/bluez/hcimanager.cpp
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/bluez/hcimanager.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -527,8 +527,9 @@
// << "payload length:" << l2CapHeader.length;
if (l2CapHeader.channelId != SECURITY_CHANNEL_ID)
return;
- if (size != 17) {
- qCWarning(QT_BT_BLUEZ) << "Unexpected key size" << size << "in Signing
Information packet";
+ if (l2CapHeader.length != 17) {
+ qCWarning(QT_BT_BLUEZ) << "Unexpected length of the Signing
Information packet:"
+ << l2CapHeader.length;
return;
}
if (*data != 0xa) // "Signing Information". Spec v4.2, Vol 3, Part H, 3.6.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/darwin/btrfcommchannel.mm
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/darwin/btrfcommchannel.mm
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/darwin/btrfcommchannel.mm
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/darwin/btrfcommchannel.mm
2026-05-08 03:18:46.000000000 +0200
@@ -142,10 +142,12 @@
{
Q_UNUSED(rfcommChannel);
- Q_ASSERT_X(channelOpenTimer.get(), Q_FUNC_INFO, "invalid timer (null)");
Q_ASSERT_X(delegate, Q_FUNC_INFO, "invalid delegate (null)");
- channelOpenTimer->stop();
+ // Timer can be null, if we're running as a server, and the channel is
+ // opened as a result of a client connection
+ if (channelOpenTimer)
+ channelOpenTimer->stop();
if (error != kIOReturnSuccess) {
delegate->setChannelError(error);
delegate->channelClosed();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/doc/src/bluetooth-index.qdoc
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/doc/src/bluetooth-index.qdoc
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/doc/src/bluetooth-index.qdoc
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/doc/src/bluetooth-index.qdoc
2026-05-08 03:18:46.000000000 +0200
@@ -16,8 +16,8 @@
\li API Feature
\li \l {Qt for Android}{Android}
\li \l {Qt for iOS}{iOS}
- \li \l {Qt for Linux/X11}{Linux (BlueZ 5.x)}
- \li \l \macos
+ \li \l {Qt for Linux}{Linux (BlueZ 5.x)}
+ \li \l {Qt for macOS}{\macos}
\li \l {Qt for Windows}{Windows}
\row
\li Classic Bluetooth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/lecmaccalculator.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/lecmaccalculator.cpp
--- old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/lecmaccalculator.cpp
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/lecmaccalculator.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -68,8 +68,6 @@
return false;
QUuid::Id128Bytes csrkMsb;
std::reverse_copy(std::begin(csrk.data), std::end(csrk.data),
std::begin(csrkMsb.data));
- qCDebug(QT_BT_BLUEZ) << "CSRK (MSB):" << QByteArray(reinterpret_cast<char
*>(csrkMsb.data),
- sizeof
csrkMsb).toHex();
if (setsockopt(m_baseSocket, 279 /* SOL_ALG */, ALG_SET_KEY, csrkMsb.data,
sizeof csrkMsb) == -1) {
qCWarning(QT_BT_BLUEZ) << "setsockopt() failed for crypto socket:" <<
strerror(errno);
return 0;
@@ -134,8 +132,7 @@
#ifdef CONFIG_LINUX_CRYPTO_API
const quint64 actualMac = calculateMac(message, csrk);
if (actualMac != expectedMac) {
- qCWarning(QT_BT_BLUEZ) << Qt::hex << "signature verification failed:
calculated mac:"
- << actualMac << "expected mac:" << expectedMac;
+ qCWarning(QT_BT_BLUEZ) << "signature verification failed: mac
mismatch";
return false;
}
return true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothdevicediscoveryagent_bluez.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -247,17 +247,13 @@
}
const ManufacturerDataList deviceManufacturerData =
qdbus_cast<ManufacturerDataList>(properties[QStringLiteral("ManufacturerData")]);
- const QList<quint16> keysManufacturer = deviceManufacturerData.keys();
- for (quint16 key : keysManufacturer)
- deviceInfo.setManufacturerData(
- key,
deviceManufacturerData.value(key).variant().toByteArray());
+ for (const auto &[key, value] : deviceManufacturerData.asKeyValueRange())
+ deviceInfo.setManufacturerData(key, value.variant().toByteArray());
const ServiceDataList deviceServiceData =
qdbus_cast<ServiceDataList>(properties[QStringLiteral("ServiceData")]);
- const QList<QString> keysService = deviceServiceData.keys();
- for (QString key : keysService)
- deviceInfo.setServiceData(QBluetoothUuid(key),
-
deviceServiceData.value(key).variant().toByteArray());
+ for (const auto &[key, value] : deviceServiceData.asKeyValueRange())
+ deviceInfo.setServiceData(QBluetoothUuid(key),
value.variant().toByteArray());
return deviceInfo;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothlocaldevice_p.h
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothlocaldevice_p.h
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothlocaldevice_p.h
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothlocaldevice_p.h
2026-05-08 03:18:46.000000000 +0200
@@ -116,6 +116,7 @@
QMap<QString, QtBluetoothPrivate::OrgFreedesktopDBusPropertiesInterface *>
deviceChangeMonitors;
QList<QBluetoothAddress> connectedDevices() const;
+ bool isValid() const;
QBluetoothAddress localAddress;
QBluetoothAddress address;
@@ -128,9 +129,6 @@
public slots:
void pairingCompleted(QDBusPendingCallWatcher *);
-
- bool isValid() const;
-
void requestPairing(const QBluetoothAddress &address,
QBluetoothLocalDevice::Pairing targetPairing);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -120,6 +120,7 @@
sdpScannerProcess->setReadChannel(QProcess::StandardOutput);
if (QT_BT_BLUEZ().isDebugEnabled())
sdpScannerProcess->setProcessChannelMode(QProcess::ForwardedErrorChannel);
+ // AXIVION Next Line Qt-Security-QProcessStart: expected behavior
sdpScannerProcess->setProgram(fileInfo.canonicalFilePath());
q->connect(sdpScannerProcess,
QOverload<int,
QProcess::ExitStatus>::of(&QProcess::finished),
@@ -403,10 +404,16 @@
_q_serviceDiscoveryFinished();
}
-QVariant
QBluetoothServiceDiscoveryAgentPrivate::readAttributeValue(QXmlStreamReader
&xml)
+QVariant
QBluetoothServiceDiscoveryAgentPrivate::readAttributeValue(QXmlStreamReader
&xml,
+ int depth)
{
auto skippingCurrentElementByDefault = qScopeGuard([&] {
xml.skipCurrentElement(); });
+ if (depth > kMaxSdpRecursionDepth) {
+ qCWarning(QT_BT_BLUEZ) << "SDP XML attribute recursion depth exceeded";
+ return QVariant();
+ }
+
if (xml.name() == QLatin1String("boolean")) {
return xml.attributes().value(QLatin1String("value")) ==
QLatin1String("true");
} else if (xml.name() == QLatin1String("uint8")) {
@@ -447,7 +454,7 @@
skippingCurrentElementByDefault.dismiss(); // we skip several elements
here
while (xml.readNextStartElement()) {
- QVariant value = readAttributeValue(xml);
+ QVariant value = readAttributeValue(xml, depth + 1);
sequence.append(value);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothservicediscoveryagent_p.h
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothservicediscoveryagent_p.h
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothservicediscoveryagent_p.h
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothservicediscoveryagent_p.h
2026-05-08 03:18:46.000000000 +0200
@@ -56,6 +56,9 @@
#include <QtBluetooth/QBluetoothLocalDevice>
#endif
+// intentionally outside of Qt namespace
+class tst_QBluetoothServiceDiscoveryAgent;
+
QT_BEGIN_NAMESPACE
class QBluetoothDeviceDiscoveryAgent;
@@ -68,7 +71,7 @@
class QWinRTBluetoothServiceDiscoveryWorker;
#endif
-class QBluetoothServiceDiscoveryAgentPrivate
+class Q_AUTOTEST_EXPORT QBluetoothServiceDiscoveryAgentPrivate
#if defined(QT_WINRT_BLUETOOTH)
: public QObject
{
@@ -80,8 +83,12 @@
{
#endif
Q_DECLARE_PUBLIC(QBluetoothServiceDiscoveryAgent)
+ friend class ::tst_QBluetoothServiceDiscoveryAgent;
public:
+ // Best-guess value. Should be enough for all real usecases.
+ static constexpr int kMaxSdpRecursionDepth = 64;
+
enum DiscoveryState {
Inactive,
DeviceDiscovery,
@@ -132,7 +139,7 @@
void runExternalSdpScan(const QBluetoothAddress &remoteAddress,
const QBluetoothAddress &localAddress);
void sdpScannerDone(int exitCode, QProcess::ExitStatus exitStatus);
- QVariant readAttributeValue(QXmlStreamReader &xml);
+ QVariant readAttributeValue(QXmlStreamReader &xml, int depth = 0);
QBluetoothServiceInfo parseServiceXml(const QString& xml);
void performMinimalServiceDiscovery(const QBluetoothAddress
&deviceAddress);
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothservicediscoveryagent_winrt.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothservicediscoveryagent_winrt.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothservicediscoveryagent_winrt.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothservicediscoveryagent_winrt.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -69,7 +69,7 @@
HRESULT onBluetoothDeviceFoundAsync(IAsyncOperation<BluetoothDevice *>
*op, AsyncStatus status);
void processServiceSearchResult(quint64 address,
ComPtr<IVectorView<RfcommDeviceService*>> services);
- QBluetoothServiceInfo::Sequence readSequence(ComPtr<IDataReader>
dataReader, bool *ok, quint8 *bytesRead);
+ QBluetoothServiceInfo::Sequence readSequence(ComPtr<IDataReader>
dataReader, bool *ok, quint8 *bytesRead, int depth = 0);
private:
quint64 m_targetAddress;
@@ -306,7 +306,7 @@
deleteLater();
}
-QBluetoothServiceInfo::Sequence
QWinRTBluetoothServiceDiscoveryWorker::readSequence(ComPtr<IDataReader>
dataReader, bool *ok, quint8 *bytesRead)
+QBluetoothServiceInfo::Sequence
QWinRTBluetoothServiceDiscoveryWorker::readSequence(ComPtr<IDataReader>
dataReader, bool *ok, quint8 *bytesRead, int depth)
{
if (ok)
*ok = false;
@@ -316,6 +316,11 @@
if (!dataReader)
return result;
+ if (depth > QBluetoothServiceDiscoveryAgentPrivate::kMaxSdpRecursionDepth)
{
+ qCWarning(QT_BT_WINDOWS) << "SDP sequence recursion depth exceeded";
+ return result;
+ }
+
quint8 remainingLength;
HRESULT hr = dataReader->ReadByte(&remainingLength);
Q_ASSERT_SUCCEEDED(hr);
@@ -404,7 +409,7 @@
}
case TYPE_SEQUENCE: {
quint8 bytesR;
- const QBluetoothServiceInfo::Sequence sequence =
readSequence(dataReader, ok, &bytesR);
+ const QBluetoothServiceInfo::Sequence sequence =
readSequence(dataReader, ok, &bytesR, depth + 1);
if (*ok)
result.append(QVariant::fromValue(sequence));
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothuuid.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothuuid.cpp
--- old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothuuid.cpp
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothuuid.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -1040,6 +1040,16 @@
\brief Returns \c true if \a a is not equal to \a b, otherwise \c false.
*/
+/*!
+ \since 6.11.1
+ \fn size_t QBluetoothUuid::qHash(QBluetoothUuid key, size_t seed = 0)
+ \qhash{QBluetoothUuid}
+
+ In Qt versions prior to 6.11.1, the type was hashable via its implicit
+ conversion to QUuid. This explicit qHash() overload retains compatibility
+ with that implicit qHash().
+*/
+
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug debug, const QBluetoothUuid &uuid)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothuuid.h
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothuuid.h
--- old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qbluetoothuuid.h
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qbluetoothuuid.h
2026-05-08 03:18:46.000000000 +0200
@@ -7,6 +7,7 @@
#include <QtBluetooth/qtbluetoothglobal.h>
#include <QtCore/QtGlobal>
+#include <QtCore/qhashfunctions.h>
#include <QtCore/QMetaType>
#include <QtCore/QUuid>
@@ -401,6 +402,12 @@
static QString protocolToString(ProtocolUuid uuid);
static QString characteristicToString(CharacteristicType uuid);
static QString descriptorToString(DescriptorType uuid);
+
+private:
+ friend size_t qHash(QBluetoothUuid key, size_t seed = 0) noexcept
+ {
+ return QHashPrivate::ex1to2arg(QUuid{key}, seed);
+ }
};
#if QT_BLUETOOTH_INLINE_IMPL_SINCE(6, 6)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qleadvertiser_bluez.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qleadvertiser_bluez.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qleadvertiser_bluez.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qleadvertiser_bluez.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -275,7 +275,7 @@
return;
const QByteArray manufacturerData = src.manufacturerData();
- if (dest.length >= sizeof dest.data - 1 - 1 - 2 - manufacturerData.size())
{
+ if (qsizetype(sizeof dest.data) - dest.length < 1 + 1 + 2 +
manufacturerData.size()) {
qCWarning(QT_BT_BLUEZ) << "manufacturer data does not fit into
advertising data packet";
return;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qleadvertiser_bluezdbus.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qleadvertiser_bluezdbus.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qleadvertiser_bluezdbus.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qleadvertiser_bluezdbus.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -50,7 +50,8 @@
// Union of service UUIDs:
if (scanResponseData.services() != advertisingData.services()) {
QList<QBluetoothUuid> services = advertisingData.services();
- for (const auto &service: scanResponseData.services()) {
+ const auto scanResponseServices = scanResponseData.services();
+ for (const auto &service : scanResponseServices) {
if (!services.contains(service))
services.append(service);
}
@@ -136,7 +137,8 @@
// Service UUIDs
if (!m_advData.services().isEmpty()) {
QStringList serviceUUIDList;
- for (const auto& service: m_advData.services())
+ const auto services = m_advData.services();
+ for (const auto &service : services)
serviceUUIDList <<
service.toString(QUuid::StringFormat::WithoutBraces);
m_advDataDBus->setServiceUUIDs(serviceUUIDList);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qlowenergycontroller_bluez.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qlowenergycontroller_bluez.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qlowenergycontroller_bluez.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qlowenergycontroller_bluez.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -212,9 +212,7 @@
|| (!remoteKey && role ==
QLowEnergyController::PeripheralRole)) {
return;
}
- qCDebug(QT_BT_BLUEZ) << "received new signature resolving key"
- << QByteArray(reinterpret_cast<const char
*>(csrk.data),
- sizeof csrk).toHex();
+ qCDebug(QT_BT_BLUEZ) << "received new signature resolving key";
signingData.insert(remoteDevice.toUInt64(), SigningData(csrk));
}
);
@@ -451,7 +449,7 @@
// BlueZ 5.37+ (maybe even earlier versions) can have pending BTLE
connections
// Only one active L2CP socket to CID 0x4 possible at a time
- QList<quint16> activeHandles = hciManager->activeLowEnergyConnections();
+ const QList<quint16> activeHandles =
hciManager->activeLowEnergyConnections();
if (!activeHandles.isEmpty()) {
qCWarning(QT_BT_BLUEZ) << "Cannot connect due to pending active LE
connections";
@@ -3229,7 +3227,6 @@
<< keyString.size();
return;
}
- qCDebug(QT_BT_BLUEZ) << "CSRK of peer device is" << keyString;
const quint32 counter = settings.value(QLatin1String("Counter"),
0).toUInt();
using namespace std;
BluezUint128 csrk;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -128,7 +128,8 @@
for (const QString &uuidString : newUuidStringList)
newUuidList.append(QBluetoothUuid(uuidString));
- for (const QBluetoothUuid &uuid : serviceList.keys()) {
+ const auto serviceKeys = serviceList.keys();
+ for (const QBluetoothUuid &uuid : serviceKeys) {
if (!newUuidList.contains(uuid)) {
qCDebug(QT_BT_BLUEZ) << __func__ << "Service" << uuid <<
"has been removed";
QSharedPointer<QLowEnergyServicePrivate> service =
serviceList.take(uuid);
@@ -502,8 +503,9 @@
batteryServicePath = it.key().path();
break;
} else if (iface == QStringLiteral("org.bluez.Device1")) {
- for (auto const& uuid :
-
battIter.value()[QStringLiteral("UUIDs")].toStringList()) {
+ const auto batteryUuids =
+
battIter.value()[QStringLiteral("UUIDs")].toStringList();
+ for (auto const &uuid : batteryUuids) {
if (QBluetoothUuid(uuid) ==
QBluetoothUuid::ServiceClassUuid::BatteryService) {
qCDebug(QT_BT_BLUEZ) << "Battery service listed as
available service";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qlowenergycontrollerbase.cpp
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qlowenergycontrollerbase.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/src/bluetooth/qlowenergycontrollerbase.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/bluetooth/qlowenergycontrollerbase.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -119,9 +119,10 @@
currentList = localServices;
const QList<QSharedPointer<QLowEnergyServicePrivate>> values =
currentList.values();
- for (auto service: values)
+ for (const auto &service: values) {
if (service->startHandle <= handle && handle <= service->endHandle)
return service;
+ }
return QSharedPointer<QLowEnergyServicePrivate>();
}
@@ -234,10 +235,10 @@
void QLowEnergyControllerPrivate::invalidateServices()
{
- for (QSharedPointer<QLowEnergyServicePrivate> service :
serviceList.values())
+ for (const QSharedPointer<QLowEnergyServicePrivate> &service :
std::as_const(serviceList))
service->setController(nullptr);
- for (QSharedPointer<QLowEnergyServicePrivate> service :
localServices.values())
+ for (const QSharedPointer<QLowEnergyServicePrivate> &service :
std::as_const(localServices))
service->setController(nullptr);
serviceList.clear();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/nfc/CMakeLists.txt
new/qtconnectivity-everywhere-src-6.11.1/src/nfc/CMakeLists.txt
--- old/qtconnectivity-everywhere-src-6.11.0/src/nfc/CMakeLists.txt
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/nfc/CMakeLists.txt
2026-05-08 03:18:46.000000000 +0200
@@ -16,8 +16,6 @@
qnearfieldmanager.cpp qnearfieldmanager.h qnearfieldmanager_p.h
qnearfieldtarget.cpp qnearfieldtarget.h qnearfieldtarget_p.cpp
qnearfieldtarget_p.h
qtnfcglobal.h qtnfcglobal_p.h
- DEFINES
- QT_NO_CONTEXTLESS_CONNECT
PUBLIC_LIBRARIES
Qt::Core
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/nfc/doc/src/nfc-index.qdoc
new/qtconnectivity-everywhere-src-6.11.1/src/nfc/doc/src/nfc-index.qdoc
--- old/qtconnectivity-everywhere-src-6.11.0/src/nfc/doc/src/nfc-index.qdoc
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/nfc/doc/src/nfc-index.qdoc
2026-05-08 03:18:46.000000000 +0200
@@ -11,7 +11,7 @@
The NFC API provides connectivity between NFC enabled devices.
Currently, the API is supported on \l{Qt for Android}{Android}, \l{Qt for
-iOS}{iOS} and \l{Qt for Linux/X11}{Linux} using
+iOS}{iOS} and \l{Qt for Linux}{Linux} using
\l {https://github.com/linux-nfc/neard}{Neard} v0.14 or later.
This module also provides limited access to readers supporting
\l{PC/SC in Qt NFC}{PC/SC} specification on Linux, macOS, and Windows.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/nfc/pcsc/qpcsc_p.h
new/qtconnectivity-everywhere-src-6.11.1/src/nfc/pcsc/qpcsc_p.h
--- old/qtconnectivity-everywhere-src-6.11.0/src/nfc/pcsc/qpcsc_p.h
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/src/nfc/pcsc/qpcsc_p.h
2026-05-08 03:18:46.000000000 +0200
@@ -26,6 +26,7 @@
# include <winscard.h>
#endif
#include <QtCore/QByteArray>
+#include <QtCore/qhashfunctions.h>
#include <QtCore/QString>
QT_BEGIN_NAMESPACE
@@ -43,12 +44,15 @@
} // namespace QPcsc
-class QPcscSlotName : public
+using QPcscSlotNameBase =
#ifdef Q_OS_WIN
QString
#else
QByteArray
#endif
+ ;
+
+class QPcscSlotName : public QPcscSlotNameBase
{
public:
#ifdef Q_OS_WIN
@@ -65,6 +69,12 @@
Ptr ptr() { return reinterpret_cast<Ptr>(data()); }
static qsizetype nameSize(CPtr p);
+
+ friend size_t qHash(const QPcscSlotName &key, size_t seed = 0) noexcept
+ {
+ const QPcscSlotNameBase &base = key;
+ return qHash(base, seed);
+ }
};
QT_END_NAMESPACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/src/tools/sdpscanner/CMakeLists.txt
new/qtconnectivity-everywhere-src-6.11.1/src/tools/sdpscanner/CMakeLists.txt
---
old/qtconnectivity-everywhere-src-6.11.0/src/tools/sdpscanner/CMakeLists.txt
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/src/tools/sdpscanner/CMakeLists.txt
2026-05-08 03:18:46.000000000 +0200
@@ -13,8 +13,6 @@
INSTALL_DIR "${INSTALL_LIBEXECDIR}"
SOURCES
main.cpp
- DEFINES
- QT_NO_CONTEXTLESS_CONNECT
LIBRARIES
PkgConfig::BLUEZ
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qbluetoothdevicediscoveryagent/tst_qbluetoothdevicediscoveryagent.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qbluetoothdevicediscoveryagent/tst_qbluetoothdevicediscoveryagent.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qbluetoothdevicediscoveryagent/tst_qbluetoothdevicediscoveryagent.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qbluetoothdevicediscoveryagent/tst_qbluetoothdevicediscoveryagent.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -86,7 +86,8 @@
const bool ciRun = qEnvironmentVariable("QTEST_ENVIRONMENT").split('
').contains("ci");
if (!ciRun && permissionStatus == Qt::PermissionStatus::Undetermined) {
QTestEventLoop loop;
- qApp->requestPermission(QBluetoothPermission{}, [this, &loop](const
QPermission &permission){
+ qApp->requestPermission(QBluetoothPermission{},
+ &loop, [this, &loop](const QPermission
&permission) {
permissionStatus = permission.status();
loop.exitLoop();
});
@@ -158,9 +159,6 @@
void tst_QBluetoothDeviceDiscoveryAgent::tst_startStopDeviceDiscoveries()
{
- if (androidBluetoothEmulator())
- QSKIP("Skipping test on Android 12+ emulator, CI can timeout waiting
for user input");
-
QBluetoothDeviceDiscoveryAgent discoveryAgent;
QVERIFY(discoveryAgent.error() == discoveryAgent.NoError);
@@ -446,9 +444,6 @@
void tst_QBluetoothDeviceDiscoveryAgent::tst_discoveryMethods()
{
- if (androidBluetoothEmulator())
- QSKIP("Skipping test on Android 12+ emulator, CI can timeout waiting
for user input");
-
const QBluetoothLocalDevice localDevice;
if (localDevice.allDevices().size() != 1) {
// On iOS it returns 0 but we still have working BT.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qbluetoothservicediscoveryagent/CMakeLists.txt
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qbluetoothservicediscoveryagent/CMakeLists.txt
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qbluetoothservicediscoveryagent/CMakeLists.txt
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qbluetoothservicediscoveryagent/CMakeLists.txt
2026-05-08 03:18:46.000000000 +0200
@@ -15,7 +15,7 @@
SOURCES
tst_qbluetoothservicediscoveryagent.cpp
LIBRARIES
- Qt::Bluetooth
+ Qt::BluetoothPrivate
)
## Scopes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -16,8 +16,14 @@
#include <qbluetoothserver.h>
#include <qbluetoothserviceinfo.h>
+#if QT_CONFIG(bluez) && defined(QT_BUILD_INTERNAL)
+#include <private/qbluetoothservicediscoveryagent_p.h>
+#endif
+
QT_USE_NAMESPACE
+using namespace Qt::StringLiterals;
+
// Maximum time to for bluetooth device scan
const int MaxScanTime = 5 * 60 * 1000; // 5 minutes in ms
@@ -42,6 +48,7 @@
void tst_serviceDiscovery();
void tst_serviceDiscoveryStop();
void tst_serviceDiscoveryAdapters();
+ void tst_parseServiceXmlRecursionLimit();
private:
QList<QBluetoothDeviceInfo> devices;
@@ -51,8 +58,6 @@
tst_QBluetoothServiceDiscoveryAgent::tst_QBluetoothServiceDiscoveryAgent()
{
QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));
- if (androidBluetoothEmulator())
- return;
// start Bluetooth if not started
#ifndef Q_OS_MACOS
QBluetoothLocalDevice *device = new QBluetoothLocalDevice();
@@ -92,9 +97,6 @@
void tst_QBluetoothServiceDiscoveryAgent::initTestCase()
{
- if (androidBluetoothEmulator())
- QSKIP("Skipping test on Android 12+ emulator, CI can timeout waiting
for user input");
-
if (localDeviceAvailable) {
QBluetoothDeviceDiscoveryAgent discoveryAgent;
@@ -458,6 +460,53 @@
QVERIFY(!discoveryAgent.isActive());
}
+void tst_QBluetoothServiceDiscoveryAgent::tst_parseServiceXmlRecursionLimit()
+{
+#if QT_CONFIG(bluez) && defined(QT_BUILD_INTERNAL)
+ // Build an SDP XML record with deeply nested <sequence> elements.
+ // Without a recursion limit this would overflow the stack.
+ const int nestingDepth =
QBluetoothServiceDiscoveryAgentPrivate::kMaxSdpRecursionDepth * 3;
+
+ QString xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
+ "<record>"
+ "<attribute id=\"0x0001\">"_L1;
+
+ for (int i = 0; i < nestingDepth; ++i)
+ xml += "<sequence>"_L1;
+ xml += "<uint16 value=\"0x1101\" />"_L1;
+ for (int i = 0; i < nestingDepth; ++i)
+ xml += "</sequence>"_L1;
+
+ xml += "</attribute></record>"_L1;
+
+ QBluetoothServiceDiscoveryAgentPrivate priv(nullptr, QBluetoothAddress());
+ // parseServiceXml accesses discoveredDevices.at(0), so provide a dummy
+ QBluetoothDeviceInfo dummyInfo{ QBluetoothAddress("00:11:22:33:44:55"_L1),
"Dummy"_L1, 0 };
+ priv.discoveredDevices.emplace_back(std::move(dummyInfo));
+
+ // Must not crash or hang; expect the recursion-limit warning
+ QTest::ignoreMessage(QtWarningMsg, "SDP XML attribute recursion depth
exceeded");
+ const QBluetoothServiceInfo info = priv.parseServiceXml(xml);
+
+ // Walk the nested sequences and count the actual depth parsed.
+ // The recursion limit must have kicked in: we expect many levels
+ // but strictly fewer than nestingDepth.
+ int actualDepth = 0;
+ QVariant v = info.attribute(0x0001);
+ while (v.canConvert<QBluetoothServiceInfo::Sequence>()) {
+ const auto seq = v.value<QBluetoothServiceInfo::Sequence>();
+ if (seq.isEmpty())
+ break;
+ ++actualDepth;
+ v = seq.first();
+ }
+ QVERIFY(actualDepth > 1);
+ QVERIFY(actualDepth < nestingDepth);
+#else
+ QSKIP("This test is only available on Linux developer build with BlueZ");
+#endif
+}
+
QTEST_MAIN(tst_QBluetoothServiceDiscoveryAgent)
#include "tst_qbluetoothservicediscoveryagent.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergycharacteristic/tst_qlowenergycharacteristic.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergycharacteristic/tst_qlowenergycharacteristic.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergycharacteristic/tst_qlowenergycharacteristic.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergycharacteristic/tst_qlowenergycharacteristic.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -261,7 +261,9 @@
// test assignment operator
target = chars[indexWithDescriptor];
QVERIFY(target.isValid());
- QVERIFY(!target.name().isEmpty());
+ // Only standard 16-bit Bluetooth SIG UUIDs are guaranteed to have a name
+ if (target.uuid().minimumSize() == 2)
+ QVERIFY(!target.name().isEmpty());
QVERIFY(!target.uuid().isNull());
QVERIFY(target.properties() != QLowEnergyCharacteristic::Unknown);
if (target.properties() & QLowEnergyCharacteristic::Read)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -102,7 +102,8 @@
const bool ciRun = qEnvironmentVariable("QTEST_ENVIRONMENT").split('
').contains("ci");
if (!ciRun && permissionStatus == Qt::PermissionStatus::Undetermined) {
QTestEventLoop loop;
- qApp->requestPermission(QBluetoothPermission{}, [this, &loop](const
QPermission &permission){
+ qApp->requestPermission(QBluetoothPermission{},
+ &loop, [this, &loop](const QPermission
&permission) {
permissionStatus = permission.status();
loop.exitLoop();
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergycontroller-gattserver/server/qlowenergycontroller-gattserver.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergycontroller-gattserver/server/qlowenergycontroller-gattserver.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergycontroller-gattserver/server/qlowenergycontroller-gattserver.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergycontroller-gattserver/server/qlowenergycontroller-gattserver.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -189,7 +189,8 @@
}
};
- QObject::connect(leController.data(), &QLowEnergyController::stateChanged,
stateChangedHandler);
+ QObject::connect(leController.data(), &QLowEnergyController::stateChanged,
+ &app, stateChangedHandler);
const auto descriptorWriteHandler = [customService]() {
if (++descriptorWriteCount != 2)
return;
@@ -210,7 +211,7 @@
leController->requestConnectionUpdate(connParams);
};
QObject::connect(customService.data(),
&QLowEnergyService::descriptorWritten,
- descriptorWriteHandler);
+ &app, descriptorWriteHandler);
return app.exec();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergydescriptor/tst_qlowenergydescriptor.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergydescriptor/tst_qlowenergydescriptor.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/auto/qlowenergydescriptor/tst_qlowenergydescriptor.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/auto/qlowenergydescriptor/tst_qlowenergydescriptor.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -55,7 +55,8 @@
const bool ciRun = qEnvironmentVariable("QTEST_ENVIRONMENT").split('
').contains("ci");
if (!ciRun && permissionStatus == Qt::PermissionStatus::Undetermined) {
QTestEventLoop loop;
- qApp->requestPermission(QBluetoothPermission{}, [this, &loop](const
QPermission &permission){
+ qApp->requestPermission(QBluetoothPermission{},
+ &loop, [this, &loop](const QPermission
&permission) {
permissionStatus = permission.status();
loop.exitLoop();
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/bluetoothtestdevice/bluetoothtestdevice.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/bluetoothtestdevice/bluetoothtestdevice.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/bluetoothtestdevice/bluetoothtestdevice.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/bluetoothtestdevice/bluetoothtestdevice.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -86,7 +86,7 @@
auto permissionStatus = app.checkPermission(QBluetoothPermission{});
if (permissionStatus == Qt::PermissionStatus::Undetermined) {
app.requestPermission(QBluetoothPermission{},
- [&permissionStatus](const QPermission
&permission) {
+ &app, [&permissionStatus](const QPermission
&permission) {
qApp->exit(); // Exit the permission request processing started
below
permissionStatus = permission.status();
});
@@ -370,12 +370,12 @@
#endif // Q_OS_IOS
QObject::connect(leController.data(), &QLowEnergyController::errorOccurred,
- [](QLowEnergyController::Error error) {
+ &app, [](QLowEnergyController::Error error) {
qDebug() << "Bluetoothtestdevice QLowEnergyController errorOccurred:"
<< error;
});
QObject::connect(leController.data(), &QLowEnergyController::stateChanged,
- [](QLowEnergyController::ControllerState state) {
+ &app, [](QLowEnergyController::ControllerState state) {
qDebug() << "Bluetoothtestdevice QLowEnergyController stateChanged:"
<< state;
});
@@ -424,9 +424,10 @@
else
qDebug() << "Cannot start advertising: Service not valid.";
};
- QObject::connect(leController.data(), &QLowEnergyController::disconnected,
reconnect);
+ QObject::connect(leController.data(), &QLowEnergyController::disconnected,
&app, reconnect);
- QObject::connect(leController.data(), &QLowEnergyController::mtuChanged,
[&services](int mtu) {
+ QObject::connect(leController.data(), &QLowEnergyController::mtuChanged,
+ &app, [&services](int mtu) {
qDebug() << "MTU changed, callback called.";
Q_ASSERT(services[1]->serviceUuid() == QBluetoothUuid(mtuServiceUuid));
QByteArray value((const char *)&mtu, sizeof(int));
@@ -467,7 +468,7 @@
++currentCharacteristicValue;
};
- QObject::connect(¬ificationTestTimer, &QTimer::timeout,
characteristicChanger);
+ QObject::connect(¬ificationTestTimer, &QTimer::timeout, &app,
characteristicChanger);
notificationTestTimer.start(100);
return app.exec();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/bttestui/btlocaldevice.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/bttestui/btlocaldevice.cpp
--- old/qtconnectivity-everywhere-src-6.11.0/tests/bttestui/btlocaldevice.cpp
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/tests/bttestui/btlocaldevice.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -926,12 +926,12 @@
emit leChanged();
QObject::connect(lePeripheralController.get(),
&QLowEnergyController::errorOccurred,
- [this](QLowEnergyController::Error error) {
+ this, [this](QLowEnergyController::Error error) {
qDebug() << "QLowEnergyController peripheral errorOccurred:" << error;
emit leChanged();
});
QObject::connect(lePeripheralController.get(),
&QLowEnergyController::stateChanged,
- [this](QLowEnergyController::ControllerState state) {
+ this, [this](QLowEnergyController::ControllerState state)
{
qDebug() << "QLowEnergyController peripheral stateChanged:" << state;
emit leChanged();
});
@@ -1038,32 +1038,32 @@
}
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::characteristicWritten,
- [](const QLowEnergyCharacteristic&, const QByteArray&
value){
+ this, [](const QLowEnergyCharacteristic&, const
QByteArray& value){
qDebug() << "LE peripheral service characteristic value written" <<
value;
});
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::characteristicRead,
- [](const QLowEnergyCharacteristic&, const QByteArray&
value){
+ this, [](const QLowEnergyCharacteristic&, const
QByteArray& value){
qDebug() << "LE peripheral service characteristic value read" << value;
});
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::characteristicChanged,
- [](const QLowEnergyCharacteristic&, const QByteArray&
value){
+ this, [](const QLowEnergyCharacteristic&, const
QByteArray& value){
qDebug() << "LE peripheral service characteristic value changed" <<
value;
});
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::descriptorRead,
- [](const QLowEnergyDescriptor&, const QByteArray& value){
+ this, [](const QLowEnergyDescriptor&, const QByteArray&
value) {
qDebug() << "LE peripheral service descriptor value read" << value;
});
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::descriptorWritten,
- [](const QLowEnergyDescriptor&, const QByteArray& value){
+ this, [](const QLowEnergyDescriptor&, const QByteArray&
value) {
qDebug() << "LE peripheral service descriptor value written" << value;
});
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::errorOccurred,
- [this](QLowEnergyService::ServiceError error){
+ this, [this](QLowEnergyService::ServiceError error){
qDebug() << "LE peripheral service errorOccurred:" << error;
emit leChanged();
});
QObject::connect(lePeripheralServices[0].get(),
&QLowEnergyService::stateChanged,
- [this](QLowEnergyService::ServiceState state){
+ this, [this](QLowEnergyService::ServiceState state) {
qDebug() << "LE peripheral service state changed:" << state;
emit leChanged();
});
@@ -1293,25 +1293,26 @@
}
QObject::connect(leCentralController.get(),
&QLowEnergyController::errorOccurred,
- [](QLowEnergyController::Error error) {
+ this, [](QLowEnergyController::Error error) {
qDebug() << "QLowEnergyController central errorOccurred:" << error;
});
- QObject::connect(leCentralController.get(),
&QLowEnergyController::discoveryFinished, []() {
+ QObject::connect(leCentralController.get(),
&QLowEnergyController::discoveryFinished,
+ this, []() {
qDebug() << "QLowEnergyController central service discovery finished";
});
QObject::connect(leCentralController.get(),
&QLowEnergyController::serviceDiscovered,
- [](const QBluetoothUuid &newService){
+ this, [](const QBluetoothUuid &newService){
qDebug() << "QLowEnergyController central service discovered:" <<
newService;
});
QObject::connect(leCentralController.get(),
&QLowEnergyController::stateChanged,
- [this](QLowEnergyController::ControllerState state) {
+ this, [this](QLowEnergyController::ControllerState state)
{
qDebug() << "QLowEnergyController central stateChanged:" << state;
if (state == QLowEnergyController::UnconnectedState)
latestRSSI = "N/A"_ba;
emit leChanged();
});
QObject::connect(leCentralController.get(),
&QLowEnergyController::rssiRead,
- [this](qint16 rssi) {
+ this, [this](qint16 rssi) {
qDebug() << "QLowEnergyController central RSSI updated:" << rssi;
latestRSSI = QByteArray::number(rssi);
emit leChanged();
@@ -1333,33 +1334,33 @@
return;
}
QObject::connect(leCentralService.get(), &QLowEnergyService::stateChanged,
- [this](QLowEnergyService::ServiceState state){
+ this, [this](QLowEnergyService::ServiceState state) {
qDebug() << "LE central service state changed:" << state;
emit leChanged();
});
QObject::connect(leCentralService.get(),
&QLowEnergyService::characteristicWritten,
- [](const QLowEnergyCharacteristic&, const QByteArray&
value){
+ this, [](const QLowEnergyCharacteristic&, const
QByteArray& value){
qDebug() << "LE central service characteristic value written" <<
value;
});
QObject::connect(leCentralService.get(),
&QLowEnergyService::characteristicRead,
- [](const QLowEnergyCharacteristic&, const QByteArray&
value){
+ this, [](const QLowEnergyCharacteristic&, const
QByteArray& value){
qDebug() << "LE central service characteristic value read" << value;
});
QObject::connect(leCentralService.get(),
&QLowEnergyService::characteristicChanged,
- [](const QLowEnergyCharacteristic&, const QByteArray&
value){
+ this, [](const QLowEnergyCharacteristic&, const
QByteArray& value){
qDebug() << "LE central service characteristic value changed" <<
value;
});
QObject::connect(leCentralService.get(),
&QLowEnergyService::descriptorRead,
- [](const QLowEnergyDescriptor&, const QByteArray& value){
+ this, [](const QLowEnergyDescriptor&, const QByteArray&
value) {
qDebug() << "LE central service descriptor value read" << value;
});
QObject::connect(leCentralService.get(),
&QLowEnergyService::descriptorWritten,
- [this](const QLowEnergyDescriptor&, const QByteArray&
value){
+ this, [this](const QLowEnergyDescriptor&, const
QByteArray& value){
qDebug() << "LE central service descriptor value written" << value;
emit leChanged();
});
QObject::connect(leCentralService.get(),
&QLowEnergyService::errorOccurred,
- [](QLowEnergyService::ServiceError error){
+ this, [](QLowEnergyService::ServiceError error){
qDebug() << "LE central service error occurred:" << error;
});
leCentralService->discoverDetails(QLowEnergyService::FullDiscovery);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/bttestui/main.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/bttestui/main.cpp
--- old/qtconnectivity-everywhere-src-6.11.0/tests/bttestui/main.cpp
2026-03-10 06:07:27.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.11.1/tests/bttestui/main.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -26,7 +26,7 @@
auto permissionStatus = app.checkPermission(QBluetoothPermission{});
if (permissionStatus == Qt::PermissionStatus::Undetermined) {
app.requestPermission(QBluetoothPermission{},
- [&permissionStatus](const QPermission
&permission) {
+ &app, [&permissionStatus](const QPermission
&permission) {
qApp->exit(); // Exit the permission request processing started
below
permissionStatus = permission.status();
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/manual/examples/btscanner/main.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/manual/examples/btscanner/main.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/manual/examples/btscanner/main.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/manual/examples/btscanner/main.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -22,8 +22,8 @@
#if QT_CONFIG(permissions)
const auto permissionStatus = app.checkPermission(QBluetoothPermission{});
if (permissionStatus == Qt::PermissionStatus::Undetermined) {
- app.requestPermission(QBluetoothPermission{}, [](const QPermission &){
- });
+ app.requestPermission(QBluetoothPermission{},
+ &app, [](const QPermission &) { });
}
// Else means either 'Granted' or 'Denied' and both normally must be
// changed using the system's settings application.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/manual/qlowenergycontroller/tst_qlowenergycontroller_device.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -135,7 +135,8 @@
permissionStatus = qApp->checkPermission(QBluetoothPermission{});
if (qApp->checkPermission(QBluetoothPermission{}) ==
Qt::PermissionStatus::Undetermined) {
QTestEventLoop loop;
- qApp->requestPermission(QBluetoothPermission{}, [this, &loop](const
QPermission &permission){
+ qApp->requestPermission(QBluetoothPermission{},
+ &loop, [this, &loop](const QPermission
&permission) {
permissionStatus = permission.status();
loop.exitLoop();
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconnectivity-everywhere-src-6.11.0/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp
new/qtconnectivity-everywhere-src-6.11.1/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp
---
old/qtconnectivity-everywhere-src-6.11.0/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp
2026-03-10 06:07:27.000000000 +0100
+++
new/qtconnectivity-everywhere-src-6.11.1/tests/manual/qlowenergycontroller_peripheral/tst_qlowenergycontroller_peripheral.cpp
2026-05-08 03:18:46.000000000 +0200
@@ -57,7 +57,8 @@
// change is in qtbase.
if (qApp->checkPermission(QBluetoothPermission{}) ==
Qt::PermissionStatus::Undetermined) {
QTestEventLoop loop;
- qApp->requestPermission(QBluetoothPermission{}, [&permissionStatus,
&loop](const QPermission &permission){
+ qApp->requestPermission(QBluetoothPermission{},
+ &loop, [&permissionStatus, &loop](const
QPermission &permission){
permissionStatus = permission.status();
loop.exitLoop();
});