diff options
Diffstat (limited to 'pw_hdlc/decoder_test.cc')
-rw-r--r-- | pw_hdlc/decoder_test.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pw_hdlc/decoder_test.cc b/pw_hdlc/decoder_test.cc index 358bb26dc..4a90a4d21 100644 --- a/pw_hdlc/decoder_test.cc +++ b/pw_hdlc/decoder_test.cc @@ -19,12 +19,14 @@ #include "gtest/gtest.h" #include "pw_bytes/array.h" +#include "pw_fuzzer/fuzztest.h" #include "pw_hdlc/internal/protocol.h" namespace pw::hdlc { namespace { using std::byte; +using namespace fuzzer; TEST(Frame, Fields) { static constexpr auto kFrameData = @@ -152,5 +154,17 @@ TEST(Decoder, TooLargeForBuffer_DecodesNextFrame) { EXPECT_EQ(OkStatus(), decoder.Process(kFlag).status()); } +void ProcessNeverCrashes(ConstByteSpan data) { + DecoderBuffer<1024> decoder; + for (byte b : data) { + if (decoder.Process(b).status() != Status::Unavailable()) { + decoder.Clear(); + } + } +} + +FUZZ_TEST(Decoder, ProcessNeverCrashes) + .WithDomains(VectorOf<1024>(Arbitrary<byte>())); + } // namespace } // namespace pw::hdlc |