aboutsummaryrefslogtreecommitdiff
path: root/pw_hdlc/decoder_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_hdlc/decoder_test.cc')
-rw-r--r--pw_hdlc/decoder_test.cc14
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