Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2262)

Unified Diff: net/filter/brotli_filter_unittest.cc

Issue 1616863002: Fix division by zero. Test filter with empty output. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/filter/brotli_filter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/filter/brotli_filter_unittest.cc
diff --git a/net/filter/brotli_filter_unittest.cc b/net/filter/brotli_filter_unittest.cc
index 9c9ce6533842f9b14157f92a3bf05582ba0a7f66..6770914b709b141adb3a57167b37fd0b5c55a92d 100644
--- a/net/filter/brotli_filter_unittest.cc
+++ b/net/filter/brotli_filter_unittest.cc
@@ -157,6 +157,7 @@ TEST_F(BrotliUnitTest, DecodeBrotli) {
// Compare the decoding result with source data
EXPECT_EQ(source_len(), decode_size);
EXPECT_EQ(memcmp(source_buffer(), decode_buffer, source_len()), 0);
+ filter_.reset(nullptr);
cbentzel 2016/01/21 10:42:59 Why is this needed? Shouldn't the scoped_ptr be go
eustas 2016/01/21 10:49:14 It is for making destruction an explicit part of t
}
// Tests we can call filter repeatedly to get all the data decoded.
@@ -168,6 +169,7 @@ TEST_F(BrotliUnitTest, DecodeWithSmallBuffer) {
DecodeAndCompareWithFilter(filter_.get(), source_buffer(), source_len(),
encoded_buffer(), encoded_len(),
kDefaultBufferSize);
+ filter_.reset(nullptr);
}
// Tests we can still decode with just 1 byte buffer in the filter.
@@ -179,6 +181,7 @@ TEST_F(BrotliUnitTest, DecodeWithOneByteBuffer) {
DecodeAndCompareWithFilter(filter_.get(), source_buffer(), source_len(),
encoded_buffer(), encoded_len(),
kDefaultBufferSize);
+ filter_.reset(nullptr);
}
// Tests we can decode when caller has small buffer to read out from filter.
@@ -195,6 +198,7 @@ TEST_F(BrotliUnitTest, DecodeWithSmallInputAndOutputBuffer) {
InitFilterWithBufferSize(kSmallBufferSize);
DecodeAndCompareWithFilter(filter_.get(), source_buffer(), source_len(),
encoded_buffer(), encoded_len(), kSmallBufferSize);
+ filter_.reset(nullptr);
}
// Tests we can still decode with just 1 byte buffer in the filter and just 1
@@ -204,9 +208,10 @@ TEST_F(BrotliUnitTest, DecodeWithOneByteInputAndOutputBuffer) {
EXPECT_EQ(1, filter_->stream_buffer_size());
DecodeAndCompareWithFilter(filter_.get(), source_buffer(), source_len(),
encoded_buffer(), encoded_len(), 1);
+ filter_.reset(nullptr);
}
-// Decoding deflate stream with corrupted data.
+// Decoding brotli stream with corrupted data.
TEST_F(BrotliUnitTest, DecodeCorruptedData) {
char corrupt_data[kDefaultBufferSize];
int corrupt_data_len = encoded_len();
@@ -215,7 +220,7 @@ TEST_F(BrotliUnitTest, DecodeCorruptedData) {
int pos = corrupt_data_len / 2;
corrupt_data[pos] = !corrupt_data[pos];
- // Decode the corrupted data with filter
+ // Decode the corrupted data with filter.
InitFilter();
char corrupt_decode_buffer[kDefaultBufferSize];
int corrupt_decode_size = kDefaultBufferSize;
@@ -223,11 +228,12 @@ TEST_F(BrotliUnitTest, DecodeCorruptedData) {
int code = DecodeAllWithFilter(filter_.get(), corrupt_data, corrupt_data_len,
corrupt_decode_buffer, &corrupt_decode_size);
- // Expect failures
+ // Expect failures.
EXPECT_EQ(Filter::FILTER_ERROR, code);
+ filter_.reset(nullptr);
}
-// Decoding deflate stream with missing data.
+// Decoding brotli stream with missing data.
TEST_F(BrotliUnitTest, DecodeMissingData) {
char corrupt_data[kDefaultBufferSize];
int corrupt_data_len = encoded_len();
@@ -238,7 +244,7 @@ TEST_F(BrotliUnitTest, DecodeMissingData) {
memmove(&corrupt_data[pos], &corrupt_data[pos + 1], len);
--corrupt_data_len;
- // Decode the corrupted data with filter
+ // Decode the corrupted data with filter.
InitFilter();
char corrupt_decode_buffer[kDefaultBufferSize];
int corrupt_decode_size = kDefaultBufferSize;
@@ -246,8 +252,26 @@ TEST_F(BrotliUnitTest, DecodeMissingData) {
int code = DecodeAllWithFilter(filter_.get(), corrupt_data, corrupt_data_len,
corrupt_decode_buffer, &corrupt_decode_size);
- // Expect failures
+ // Expect failures.
EXPECT_EQ(Filter::FILTER_ERROR, code);
+ filter_.reset(nullptr);
+}
+
+// Decoding brotli stream with empty output data.
+TEST_F(BrotliUnitTest, DecodeEmptyData) {
+ char data[1] = {6}; // WBITS = 16, ISLAST = 1, ISLASTEMPTY = 1
+ int data_len = 1;
+
+ InitFilter();
+ char decode_buffer[kDefaultBufferSize];
+ int decode_size = kDefaultBufferSize;
+ int code = DecodeAllWithFilter(filter_.get(), data, data_len, decode_buffer,
+ &decode_size);
+
+ // Expect success / empty output.
+ EXPECT_EQ(Filter::FILTER_DONE, code);
+ EXPECT_EQ(0, decode_size);
+ filter_.reset(nullptr);
}
} // namespace net
« no previous file with comments | « net/filter/brotli_filter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698