diff options
Diffstat (limited to 'tests/auto/corelib/serialization')
-rw-r--r-- | tests/auto/corelib/serialization/cborlargedatavalidation.cpp | 15 | ||||
-rw-r--r-- | tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp | 6 |
2 files changed, 11 insertions, 10 deletions
diff --git a/tests/auto/corelib/serialization/cborlargedatavalidation.cpp b/tests/auto/corelib/serialization/cborlargedatavalidation.cpp index 64191db1ef..c5cf1dc04e 100644 --- a/tests/auto/corelib/serialization/cborlargedatavalidation.cpp +++ b/tests/auto/corelib/serialization/cborlargedatavalidation.cpp @@ -87,25 +87,28 @@ void addValidationLargeData(qsizetype minInvalid, qsizetype maxInvalid) toolong[0] = sizeof(v) > 4 ? 0x5b : 0x5a; qToBigEndian(v, toolong + 1); + bool overflows = v > std::numeric_limits<qsizetype>::max() - 1 - qsizetype(sizeof(v)); + CborError err = overflows ? CborErrorDataTooLarge : CborErrorUnexpectedEOF; + QTest::addRow("bytearray-too-big-for-qbytearray-%llx", v) - << QByteArray(toolong, sizeof(toolong)) << 0 << CborErrorUnexpectedEOF; + << QByteArray(toolong, sizeof(toolong)) << 0 << err; QTest::addRow("bytearray-chunked-too-big-for-qbytearray-%llx", v) << ('\x5f' + QByteArray(toolong, sizeof(toolong)) + '\xff') - << 0 << CborErrorUnexpectedEOF; + << 0 << err; QTest::addRow("bytearray-2chunked-too-big-for-qbytearray-%llx", v) << ("\x5f\x40" + QByteArray(toolong, sizeof(toolong)) + '\xff') - << 0 << CborErrorUnexpectedEOF; + << 0 << err; toolong[0] |= 0x20; // QCborStreamReader::readString copies to a QByteArray first QTest::addRow("string-too-big-for-qbytearray-%llx", v) - << QByteArray(toolong, sizeof(toolong)) << 0 << CborErrorUnexpectedEOF; + << QByteArray(toolong, sizeof(toolong)) << 0 << err; QTest::addRow("string-chunked-too-big-for-qbytearray-%llx", v) << ('\x7f' + QByteArray(toolong, sizeof(toolong)) + '\xff') - << 0 << CborErrorUnexpectedEOF; + << 0 << err; QTest::addRow("string-2chunked-too-big-for-qbytearray-%llx", v) << ("\x7f\x60" + QByteArray(toolong, sizeof(toolong)) + '\xff') - << 0 << CborErrorUnexpectedEOF; + << 0 << err; } } 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); } } |