diff --git a/src/format/KeePass2Repair.cpp b/src/format/KeePass2Repair.cpp index 4eff3d806..f435a7d51 100644 --- a/src/format/KeePass2Repair.cpp +++ b/src/format/KeePass2Repair.cpp @@ -66,7 +66,7 @@ KeePass2Repair::RepairResult KeePass2Repair::repairDatabase(QIODevice* device, c // try to fix broken databases because of bug #392 for (int i = (xmlData.size() - 1); i >= 0; i--) { - char ch = xmlData.at(i); + quint8 ch = static_cast(xmlData.at(i)); if (ch < 0x20 && ch != 0x09 && ch != 0x0A && ch != 0x0D) { xmlData.remove(i, 1); repairAction = true; diff --git a/tests/TestKeePass2Writer.cpp b/tests/TestKeePass2Writer.cpp index 638d4002e..1c7b5f70c 100644 --- a/tests/TestKeePass2Writer.cpp +++ b/tests/TestKeePass2Writer.cpp @@ -133,7 +133,7 @@ void TestKeePass2Writer::testRepair() { QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx"); // master password = test - // entry username: testuser\x10 + // entry username: testuser\x10\x20AC // entry password: testpw CompositeKey key; key.addKey(PasswordKey("test")); @@ -153,7 +153,7 @@ void TestKeePass2Writer::testRepair() QVERIFY(dbRepaired); QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1); - QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser")); + QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(0x20AC)); QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw")); } diff --git a/tests/data/bug392.kdbx b/tests/data/bug392.kdbx index c649f8dc2..0953d8677 100644 Binary files a/tests/data/bug392.kdbx and b/tests/data/bug392.kdbx differ