From fc465784df7893abc180ede9b69b4e27aaa522f7 Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 24 Sep 2013 14:14:14 +0200 Subject: We can't expect a multiple of 8 during marker search. Once the marker was on a position not matching a multiple of 8 from the end, the search would fail. Now decrement by 1 byte. Change-Id: Ia703c9074b3bef6b1a300865abfe24dcb2c8d5fd Reviewed-by: Tim Jenssen Reviewed-by: Niels Weber --- src/libs/installer/binaryformat.cpp | 2 +- tests/auto/installer/binaryformat/tst_binaryformat.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/installer/binaryformat.cpp b/src/libs/installer/binaryformat.cpp index 8e79e84c3..fe1c61ced 100644 --- a/src/libs/installer/binaryformat.cpp +++ b/src/libs/installer/binaryformat.cpp @@ -237,7 +237,7 @@ qint64 QInstaller::findMagicCookie(QFile *in, quint64 magicCookie) while (searched >= 0) { if (memcmp(&magicCookie, (mapped + searched), markerSize) == 0) return (fileSize - maxSearch) + searched; - searched -= markerSize; + --searched; } throw Error(QObject::tr("No marker found, stopped after %1.").arg(humanReadableSize(maxSearch))); diff --git a/tests/auto/installer/binaryformat/tst_binaryformat.cpp b/tests/auto/installer/binaryformat/tst_binaryformat.cpp index 6e520dc3e..59f0e8e03 100644 --- a/tests/auto/installer/binaryformat/tst_binaryformat.cpp +++ b/tests/auto/installer/binaryformat/tst_binaryformat.cpp @@ -46,7 +46,7 @@ #include #include -static const qint64 scTinySize = 51200LL; +static const qint64 scTinySize = 72704LL; static const qint64 scSmallSize = 524288LL; static const qint64 scLargeSize = 2097152LL; @@ -92,7 +92,7 @@ private slots: void testFindMagicCookieWithError() { - QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"No marker found, stopped after 50.00 KiB.\" "); + QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"No marker found, stopped after 71.00 KiB.\" "); QTemporaryFile file; file.open(); @@ -103,7 +103,7 @@ private slots: // throws QInstaller::findMagicCookie(&file, QInstaller::MagicCookie); } catch (const QInstaller::Error &error) { - QCOMPARE(qPrintable(error.message()), "No marker found, stopped after 50.00 KiB."); + QCOMPARE(qPrintable(error.message()), "No marker found, stopped after 71.00 KiB."); } catch (...) { QFAIL("Unexpected error."); } -- cgit v1.2.3