diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-06-26 12:59:00 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-06-26 12:59:00 +0000 |
commit | e0c5ffc933056386947eb8d2a2cdff940a68dfc1 (patch) | |
tree | 7d022d85b3ffa8b530e68d3e3f7283e27362b480 /logd/src/tests/proto_converter/proto_converter_test.cpp | |
parent | c5248092fa13c86fe7ada994f59f238160c6586a (diff) |
filter invalid UTF-8 (including encoded surrogates) to make protobuf happy
Diffstat (limited to 'logd/src/tests/proto_converter/proto_converter_test.cpp')
-rw-r--r-- | logd/src/tests/proto_converter/proto_converter_test.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/logd/src/tests/proto_converter/proto_converter_test.cpp b/logd/src/tests/proto_converter/proto_converter_test.cpp index aa0b00e34d6..0f9c64e4a41 100644 --- a/logd/src/tests/proto_converter/proto_converter_test.cpp +++ b/logd/src/tests/proto_converter/proto_converter_test.cpp @@ -84,5 +84,21 @@ TEST_F(LogRequestTest, log_messages_are_converted_to_request) ProtoLogLevel::LogMessage_Level_EVENT, "bar_payload", proto.log_messages(1)); } +// UTF-8 encoding of \U+FFFD +#define FFFD "\xEF\xBF\xBD" + +TEST_F(LogRequestTest, invalid_utf8_is_filtered) +{ + messages.emplace_back(12345, "foo_host", 3, 5, "foo_service", "foo_component", Logger::info, + "valid: \xE2\x82\xAC and \xEF\xBF\xBA; invalid: \xCC surrogate \xED\xBF\xBF overlong \xC1\x81 end" + ); + convert(); + EXPECT_EQ(1, proto.log_messages_size()); + expect_proto_log_message_equal(12345, "foo_host", 3, 5, "foo_service", "foo_component", + ProtoLogLevel::LogMessage_Level_INFO, + "valid: \xE2\x82\xAC and \xEF\xBF\xBA; invalid: " FFFD " surrogate " FFFD " overlong " FFFD FFFD " end", + proto.log_messages(0)); +} + GTEST_MAIN_RUN_ALL_TESTS() |