From 0422943d521a9c50377040cba2743a97ee7ee2eb Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Mon, 20 Jul 2015 21:28:51 +0200 Subject: [PATCH] Explicitly close/reset streams so we can detect errors. --- src/format/KeePass2Writer.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/format/KeePass2Writer.cpp b/src/format/KeePass2Writer.cpp index f233ac733..dfbbf3532 100644 --- a/src/format/KeePass2Writer.cpp +++ b/src/format/KeePass2Writer.cpp @@ -127,6 +127,20 @@ void KeePass2Writer::writeDatabase(QIODevice* device, Database* db) KeePass2XmlWriter xmlWriter; xmlWriter.writeDatabase(m_device, db, &randomStream, headerHash); + // Explicitly close/reset streams so they are flushed and we can detect + // errors. QIODevice::close() resets errorString() etc. + if (ioCompressor) { + ioCompressor->close(); + } + if (!hashedStream.reset()) { + raiseError(hashedStream.errorString()); + return; + } + if (!cipherStream.reset()) { + raiseError(cipherStream.errorString()); + return; + } + if (xmlWriter.hasError()) { raiseError(xmlWriter.errorString()); }