diff options
author | Alex Blasche <alexander.blasche@theqtcompany.com> | 2016-02-10 11:07:05 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2016-02-11 06:42:22 +0000 |
commit | 40a91836221740cf9391ccfd36b92c368db59a8f (patch) | |
tree | 9e144c2647ee69844d76f79335bd0551ff64647a | |
parent | 02ebea91bcf0e212b3226a761a491625f671e73b (diff) |
Fix undefined behavior in AddressInfo's default ctor.
The AddressInfo::type member was not properly initialised.
Change-Id: I79c8e1d00d4cb03e3d073a23bb4dbf6b9d510b7c
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
3 files changed, 16 insertions, 3 deletions
diff --git a/src/bluetooth/qlowenergyadvertisingparameters.cpp b/src/bluetooth/qlowenergyadvertisingparameters.cpp index 46a09c05..31111da6 100644 --- a/src/bluetooth/qlowenergyadvertisingparameters.cpp +++ b/src/bluetooth/qlowenergyadvertisingparameters.cpp @@ -132,12 +132,16 @@ public: /*! \variable QLowEnergyAdvertisingParameters::AddressInfo::address - The Bluetooth address of a remote address. + + This is the Bluetooth address of a remote device. */ /*! \variable QLowEnergyAdvertisingParameters::AddressInfo::type - The type of the address (public or private). + + The type of the address (public or private). + The \l AddressInfo default constructor initialises this value to + \l QLowEnergyController::PublicAddress. */ /*! @@ -151,6 +155,10 @@ public: \fn QLowEnergyAdvertisingParameters::AddressInfo::AddressInfo() Constructs a default constructed AddressInfo instance. + + By default the \l AddressInfo::type member is set to + \l QLowEnergyController::PublicAddress and the \l AddressInfo::address + member has a null address. */ /*! diff --git a/src/bluetooth/qlowenergyadvertisingparameters.h b/src/bluetooth/qlowenergyadvertisingparameters.h index 23e918a2..547e5798 100644 --- a/src/bluetooth/qlowenergyadvertisingparameters.h +++ b/src/bluetooth/qlowenergyadvertisingparameters.h @@ -68,7 +68,7 @@ public: struct AddressInfo { AddressInfo(const QBluetoothAddress &addr, QLowEnergyController::RemoteAddressType t) : address(addr), type(t) {} - AddressInfo() {} + AddressInfo() : type(QLowEnergyController::PublicAddress) {} QBluetoothAddress address; QLowEnergyController::RemoteAddressType type; diff --git a/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp b/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp index 8b11e5a7..f487db00 100644 --- a/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp +++ b/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp @@ -114,6 +114,11 @@ void TestQLowEnergyControllerGattServer::advertisingParameters() QCOMPARE(params.whiteList(), whiteList); QCOMPARE(params.filterPolicy(), QLowEnergyAdvertisingParameters::UseWhiteListForConnecting); QVERIFY(params != QLowEnergyAdvertisingParameters()); + + // verify default ctor + QLowEnergyAdvertisingParameters::AddressInfo info; + QVERIFY(info.address == QBluetoothAddress()); + QVERIFY(info.type == QLowEnergyController::PublicAddress); } void TestQLowEnergyControllerGattServer::advertisingData() |