diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2020-11-07 09:56:49 -0800 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-12-06 07:51:19 +0000 |
commit | 638171eb10cfb186a6c47ec052a3b0c5b6449386 (patch) | |
tree | 203ab7970becd15c8edaae99ec708af043672f15 /tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp | |
parent | 9a55f40937d037d06e00b09465d8dad0554692fc (diff) |
QCborValue: avoid allocating result if data is insufficient
Similar to the previous commit which applied to QCborStreamReader, don't
allocate too much data before checking that the stream actually has that
much.
Pick-to: 5.15 6.0
Fixes: QTBUG-88256
Change-Id: I7b9b97ae9b32412abdc6fffd16454b7568a063ba
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp')
-rw-r--r-- | tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp b/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp index 64d4451f08..4ec5095f1c 100644 --- a/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp +++ b/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp @@ -2007,11 +2007,11 @@ void tst_QCborValue::validation_data() qToBigEndian(MinInvalid - 1, toolong + 1); QTest::addRow("bytearray-2chunked+1-too-big-for-qbytearray-%llx", MinInvalid) << ("\x5f\x41z" + QByteArray(toolong, sizeof(toolong)) + '\xff') - << 0 << CborErrorDataTooLarge; + << 0 << CborErrorUnexpectedEOF; toolong[0] |= 0x20; QTest::addRow("string-2chunked+1-too-big-for-qbytearray-%llx", MinInvalid) << ("\x7f\x61z" + QByteArray(toolong, sizeof(toolong)) + '\xff') - << 0 << CborErrorDataTooLarge; + << 0 << CborErrorUnexpectedEOF; // These tests say we have arrays and maps with very large item counts. // They are meant to ensure we don't pre-allocate a lot of memory @@ -2042,7 +2042,6 @@ void tst_QCborValue::validation() QCborParserError parserError; QCborValue decoded = QCborValue::fromCbor(data, &parserError); - if (parserError.error != QCborError::DataTooLarge) // ### temporary!! QCOMPARE(parserError.error, error); if (data.startsWith('\x81')) { @@ -2050,7 +2049,6 @@ void tst_QCborValue::validation() char *ptr = const_cast<char *>(data.constData()); QByteArray mid = QByteArray::fromRawData(ptr + 1, data.size() - 1); decoded = QCborValue::fromCbor(mid, &parserError); - if (parserError.error != QCborError::DataTooLarge) // ### temporary!! QCOMPARE(parserError.error, error); } } |