summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorljfa-ag <ljfa-ag@web.de>2015-09-15 13:25:36 +0200
committerljfa-ag <ljfa-ag@web.de>2015-09-15 13:25:36 +0200
commit7a8a1833dc766abc1626a1e590e3f39a7d503062 (patch)
tree8fb7f54af2815e6e824360b2ce5dddb4a107c02e
parent0f76512c7a8d4aaf3928c9c9bb4bc35dda1ac171 (diff)
downloadProject-Tick-7a8a1833dc766abc1626a1e590e3f39a7d503062.tar.gz
Project-Tick-7a8a1833dc766abc1626a1e590e3f39a7d503062.zip
Add tests for corrupted input data
-rw-r--r--test/testfiles/bigtest_corrupt.nbtbin0 -> 561 bytes
-rw-r--r--test/testfiles/bigtest_eof.nbtbin0 -> 426 bytes
-rw-r--r--test/zlibstream_test.h29
3 files changed, 25 insertions, 4 deletions
diff --git a/test/testfiles/bigtest_corrupt.nbt b/test/testfiles/bigtest_corrupt.nbt
new file mode 100644
index 0000000000..71eba42a7b
--- /dev/null
+++ b/test/testfiles/bigtest_corrupt.nbt
Binary files differ
diff --git a/test/testfiles/bigtest_eof.nbt b/test/testfiles/bigtest_eof.nbt
new file mode 100644
index 0000000000..eeedb9d26d
--- /dev/null
+++ b/test/testfiles/bigtest_eof.nbt
Binary files differ
diff --git a/test/zlibstream_test.h b/test/zlibstream_test.h
index 7620246d74..f37dcdbd91 100644
--- a/test/zlibstream_test.h
+++ b/test/zlibstream_test.h
@@ -39,7 +39,7 @@ public:
throw std::runtime_error("Could not read bigtest_uncompr file");
}
- void test_izlibstream_gzip()
+ void test_inflate_gzip()
{
std::ifstream gzip_in("bigtest.nbt", std::ios::binary);
TS_ASSERT(gzip_in);
@@ -50,7 +50,6 @@ public:
izlibstream igzs(gzip_in, 256);
igzs.exceptions(std::ios::failbit);
TS_ASSERT(igzs.good());
- TS_ASSERT(!igzs.eof());
TS_ASSERT_THROWS_NOTHING(igzs >> &data);
TS_ASSERT(igzs);
@@ -67,7 +66,6 @@ public:
izlibstream igzs(gzip_in, 1000);
igzs.exceptions(std::ios::failbit);
TS_ASSERT(igzs.good());
- TS_ASSERT(!igzs.eof());
TS_ASSERT_THROWS_NOTHING(igzs >> &data);
TS_ASSERT(igzs);
@@ -83,7 +81,6 @@ public:
izlibstream igzs(gzip_in, 4000);
igzs.exceptions(std::ios::failbit);
TS_ASSERT(igzs.good());
- TS_ASSERT(!igzs.eof());
TS_ASSERT_THROWS_NOTHING(igzs >> &data);
TS_ASSERT(igzs);
@@ -91,4 +88,28 @@ public:
TS_ASSERT_EQUALS(data.str(), bigtest.str());
}
}
+
+ void test_inflate_corrupt()
+ {
+ std::ifstream gzip_in("bigtest_corrupt.nbt", std::ios::binary);
+ TS_ASSERT(gzip_in);
+
+ std::stringbuf data;
+ {
+ izlibstream igzs(gzip_in);
+ igzs.exceptions(std::ios::failbit);
+ TS_ASSERT_THROWS(igzs >> &data, zlib_error);
+ }
+
+ gzip_in.close();
+ gzip_in.open("bigtest_eof.nbt", std::ios::binary);
+ TS_ASSERT(gzip_in);
+
+ data.str("");
+ {
+ izlibstream igzs(gzip_in);
+ igzs.exceptions(std::ios::failbit);
+ TS_ASSERT_THROWS(igzs >> &data, zlib_error);
+ }
+ }
};