Skip to content

Commit f547bb8

Browse files
author
Lauris Kaplinski
committed
Truncate file to trigger zlib error
Signed-off-by: Lauris Kaplinski <lauris@raulwalter.com>
1 parent e4d4a38 commit f547bb8

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

test/libcdoc_boost.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,25 @@ BOOST_FIXTURE_TEST_CASE_WITH_DECOR(CDoc2DecryptErrors, DecryptFixture,
491491
BOOST_TEST(rdr->nextFile(fi) == libcdoc::OK);
492492
BOOST_TEST(rdr->finishDecryption() == libcdoc::CRYPTO_ERROR);
493493
delete rdr;
494+
495+
// Truncate file, should result zlib error
496+
std::filesystem::resize_file(container, fsize - 32);
497+
rdr = libcdoc::CDocReader::createReader(container, &conf, &crypto, nullptr);
498+
BOOST_TEST(rdr != nullptr, "Cannot create reader");
499+
BOOST_TEST(rdr->getFMK(fmk, 0) == libcdoc::OK);
500+
BOOST_TEST(rdr->beginDecryption(fmk) == libcdoc::OK);
501+
libcdoc::result_t rv = rdr->nextFile(fi);
502+
BOOST_TEST(((rv == libcdoc::OK) || (rv == libcdoc::ZLIB_ERROR)));
503+
for (int i = 0; i < 4; i++) {
504+
rv = rdr->readData(buf, 256);
505+
BOOST_TEST(((rv == 256) || (rv == libcdoc::ZLIB_ERROR)));
506+
}
507+
rv = rdr->nextFile(fi);
508+
BOOST_TEST(((rv == libcdoc::OK) || (rv == libcdoc::ZLIB_ERROR)));
509+
rv = rdr->readData(buf, 256);
510+
BOOST_TEST(((rv == 255) || (rv == libcdoc::ZLIB_ERROR)));
511+
BOOST_TEST(rdr->finishDecryption() == libcdoc::CRYPTO_ERROR);
512+
delete rdr;
494513
}
495514
BOOST_AUTO_TEST_SUITE_END()
496515

0 commit comments

Comments
 (0)