diff options
author | Felix Geyer <debfx@fobos.de> | 2016-01-29 01:07:04 +0300 |
---|---|---|
committer | Felix Geyer <debfx@fobos.de> | 2016-01-29 01:07:04 +0300 |
commit | eb56bd8973859e49384ada8757639466f483c22c (patch) | |
tree | 9dc5201e8d4fec492903abf77ed0e39e6ce916bd /src/format/KeePass2Reader.cpp | |
parent | 93585aded73b122107897a27246d58630c3c0ed3 (diff) |
Add repair functionality to strip invalid XML chars.
Refs #392
Diffstat (limited to 'src/format/KeePass2Reader.cpp')
-rw-r--r-- | src/format/KeePass2Reader.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/format/KeePass2Reader.cpp b/src/format/KeePass2Reader.cpp index adde8cdbe..d1ca9ed9c 100644 --- a/src/format/KeePass2Reader.cpp +++ b/src/format/KeePass2Reader.cpp @@ -43,7 +43,7 @@ KeePass2Reader::KeePass2Reader() { } -Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& key) +Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase) { QScopedPointer<Database> db(new Database()); m_db = db.data(); @@ -178,7 +178,12 @@ Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& ke if (xmlReader.hasError()) { raiseError(xmlReader.errorString()); - return Q_NULLPTR; + if (keepDatabase) { + return db.take(); + } + else { + return Q_NULLPTR; + } } Q_ASSERT(version < 0x00030001 || !xmlReader.headerHash().isEmpty()); @@ -232,6 +237,11 @@ QByteArray KeePass2Reader::xmlData() return m_xmlData; } +QByteArray KeePass2Reader::streamKey() +{ + return m_protectedStreamKey; +} + void KeePass2Reader::raiseError(const QString& errorMessage) { m_error = true; |