From 2a26a4e349cd835d10bed6b3c4a5b5432ebb94ae Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Sat, 9 Oct 2021 01:05:56 +0800 Subject: [PATCH 1/3] Fix broken browser integration since #6899 This patch fixes a regression from https://github.com/keepassxreboot/keepassxc/pull/6899. Before https://github.com/keepassxreboot/keepassxc/pull/1770, entry UUIDs are simply random 16-byte strings. On the other hand, since PR #6899, only RFC4122 UUIDs with a valid version are accepted. As a result, browser actions passing a UUID (ex: get_totp) are rejected with "No valid UUID provided" for older entries. --- src/core/Tools.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Tools.cpp b/src/core/Tools.cpp index 22460d2d13..58a38f4332 100644 --- a/src/core/Tools.cpp +++ b/src/core/Tools.cpp @@ -324,7 +324,7 @@ namespace Tools } const auto uuid = hexToUuid(uuidStr); - if (uuid.isNull() || uuid.version() == QUuid::VerUnknown) { + if (uuid.isNull()) { return false; } From 7eef266d6d684d3ceac49e10ae2ae9a4e75b64c2 Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Sat, 9 Oct 2021 16:29:49 +0800 Subject: [PATCH 2/3] Fix tests --- tests/TestTools.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/TestTools.cpp b/tests/TestTools.cpp index 312af3da00..0f3f29110e 100644 --- a/tests/TestTools.cpp +++ b/tests/TestTools.cpp @@ -92,14 +92,17 @@ void TestTools::testEnvSubstitute() void TestTools::testValidUuid() { auto validUuid = Tools::uuidToHex(QUuid::createUuid()); - auto nonValidUuid = "1234567890abcdef1234567890abcdef"; + auto nonRfc4122Uuid = "1234567890abcdef1234567890abcdef"; auto emptyUuid = QString(); auto shortUuid = validUuid.left(10); auto longUuid = validUuid + "baddata"; auto nonHexUuid = Tools::uuidToHex(QUuid::createUuid()).replace(0, 1, 'p'); QVERIFY(Tools::isValidUuid(validUuid)); - QVERIFY(not Tools::isValidUuid(nonValidUuid)); + /* Before https://github.com/keepassxreboot/keepassxc/pull/1770/, entry + * UUIDs are simply random 16-byte strings. Such older entries should be + * accepted as well. */ + QVERIFY(Tools::isValidUuid(nonRfc4122Uuid)); QVERIFY(not Tools::isValidUuid(emptyUuid)); QVERIFY(not Tools::isValidUuid(shortUuid)); QVERIFY(not Tools::isValidUuid(longUuid)); From 4d7b030892216255eefa34f6ef4c3d553223cec9 Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Sat, 9 Oct 2021 19:49:46 +0800 Subject: [PATCH 3/3] Use more common C++ operators --- tests/TestTools.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/TestTools.cpp b/tests/TestTools.cpp index 0f3f29110e..881434c19c 100644 --- a/tests/TestTools.cpp +++ b/tests/TestTools.cpp @@ -48,7 +48,7 @@ void TestTools::testHumanReadableFileSize() void TestTools::testIsHex() { QVERIFY(Tools::isHex("0123456789abcdefABCDEF")); - QVERIFY(not Tools::isHex(QByteArray("0xnothex"))); + QVERIFY(!Tools::isHex(QByteArray("0xnothex"))); } void TestTools::testIsBase64() @@ -59,9 +59,9 @@ void TestTools::testIsBase64() QVERIFY(Tools::isBase64(QByteArray("abcd9876MN=="))); QVERIFY(Tools::isBase64(QByteArray("abcd9876DEFGhijkMNO="))); QVERIFY(Tools::isBase64(QByteArray("abcd987/DEFGh+jk/NO="))); - QVERIFY(not Tools::isBase64(QByteArray("abcd123=="))); - QVERIFY(not Tools::isBase64(QByteArray("abc_"))); - QVERIFY(not Tools::isBase64(QByteArray("123"))); + QVERIFY(!Tools::isBase64(QByteArray("abcd123=="))); + QVERIFY(!Tools::isBase64(QByteArray("abc_"))); + QVERIFY(!Tools::isBase64(QByteArray("123"))); } void TestTools::testEnvSubstitute() @@ -103,8 +103,8 @@ void TestTools::testValidUuid() * UUIDs are simply random 16-byte strings. Such older entries should be * accepted as well. */ QVERIFY(Tools::isValidUuid(nonRfc4122Uuid)); - QVERIFY(not Tools::isValidUuid(emptyUuid)); - QVERIFY(not Tools::isValidUuid(shortUuid)); - QVERIFY(not Tools::isValidUuid(longUuid)); - QVERIFY(not Tools::isValidUuid(nonHexUuid)); + QVERIFY(!Tools::isValidUuid(emptyUuid)); + QVERIFY(!Tools::isValidUuid(shortUuid)); + QVERIFY(!Tools::isValidUuid(longUuid)); + QVERIFY(!Tools::isValidUuid(nonHexUuid)); }