Skip to content

Commit a5f1ae7

Browse files
authored
Merge pull request #897 from deXol/developBLEIntegrityCheck
[BLE] Integrity Check fix backward compatibility issue and getMemoryFirstNodeAddress
2 parents d6b600a + fdf0cd3 commit a5f1ae7

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

src/MPDevice.cpp

100644100755
Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -968,7 +968,15 @@ QByteArray MPDevice::getMemoryFirstNodeAddress(void)
968968
if (isBLE())
969969
{
970970
/* BLE: Address format is 2 bytes little endian. last 1 bit is node number (for pages that can accomodate 2 nodes) and first 15 bits are page address */
971-
return QByteArray::fromHex("0200");
971+
auto flashMbSize = get_flashMbSize();
972+
if (1 == flashMbSize || 2 == flashMbSize || 32 == flashMbSize)
973+
{
974+
return QByteArray::fromHex("0100");
975+
}
976+
else
977+
{
978+
return QByteArray::fromHex("0200");
979+
}
972980
}
973981
/* Address format is 2 bytes little endian. last 3 bits are node number and first 13 bits are page address */
974982
switch(get_flashMbSize())
@@ -7093,7 +7101,7 @@ void MPDevice::moveFetchedNodes(NodeList &sourceNodes, NodeList &sourceNodesClon
70937101
*/
70947102
auto nodeAddr = node->getAddress();
70957103
auto cloneNode = std::find_if(sourceNodesClone.begin(), sourceNodesClone.end(),
7096-
[nodeAddr](MPNode *n) { return nodeAddr.compare(n->getAddress()) == 0; });
7104+
[nodeAddr](MPNode *n) { return nodeAddr == n->getAddress(); });
70977105
if (cloneNode != sourceNodesClone.end())
70987106
{
70997107
destNodesClone.append(*cloneNode);
@@ -7128,7 +7136,7 @@ void MPDevice::moveFetchedFido2Nodes()
71287136
webAuthnLoginChildNodes.append(node);
71297137
auto nodeAddr = node->getAddress();
71307138
auto cloneNode = std::find_if(loginChildNodesClone.begin(), loginChildNodesClone.end(),
7131-
[nodeAddr](MPNode *n) { return nodeAddr.compare(n->getAddress()) == 0; });
7139+
[nodeAddr](MPNode *n) { return nodeAddr == n->getAddress(); });
71327140
if (cloneNode != loginChildNodesClone.end())
71337141
{
71347142
webAuthnLoginChildNodesClone.append(*cloneNode);
@@ -7166,14 +7174,14 @@ void MPDevice::moveFetchedFido2Nodes()
71667174
auto firstChildNode = parentNode->getStartChildAddress();
71677175
// Search parent's first child in webauthn child list
71687176
auto webAuthNode = std::find_if(webAuthnLoginChildNodes.begin(), webAuthnLoginChildNodes.end(),
7169-
[firstChildNode](MPNode *n) { return firstChildNode.compare(n->getAddress()) == 0; });
7177+
[firstChildNode](MPNode *n) { return firstChildNode == n->getAddress(); });
71707178
if (webAuthNode != webAuthnLoginChildNodes.end())
71717179
{
71727180
// Need to move parent to webAuthnLoginNodes
71737181
webAuthnLoginNodes.append(parentNode);
71747182
auto nodeAddr = parentNode->getAddress();
71757183
auto cloneNode = std::find_if(loginNodesClone.begin(), loginNodesClone.end(),
7176-
[nodeAddr](MPNode *n) { return nodeAddr.compare(n->getAddress()) == 0; });
7184+
[nodeAddr](MPNode *n) { return nodeAddr == n->getAddress(); });
71777185
if (cloneNode != loginNodesClone.end())
71787186
{
71797187
webAuthnLoginNodesClone.append(*cloneNode);

0 commit comments

Comments
 (0)