From d8b14dc765d4fdf14eae97a790e1843089eb5466 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Fri, 18 Mar 2022 15:42:58 +0300 Subject: [PATCH] Add fuzzing for client hello --- .../faketls/client_hello_fuzz_test.go | 21 +++++++++++++++++++ mtglib/internal/faketls/init.go | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 mtglib/internal/faketls/client_hello_fuzz_test.go diff --git a/mtglib/internal/faketls/client_hello_fuzz_test.go b/mtglib/internal/faketls/client_hello_fuzz_test.go new file mode 100644 index 0000000..84db20d --- /dev/null +++ b/mtglib/internal/faketls/client_hello_fuzz_test.go @@ -0,0 +1,21 @@ +package faketls_test + +import ( + "testing" + + "github.com/9seconds/mtg/v2/mtglib/internal/faketls" + "github.com/stretchr/testify/require" +) + +var FuzzClientHelloSecret = []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + +func FuzzClientHello(f *testing.F) { + f.Add([]byte{1, 2, 3}) + + f.Fuzz(func(t *testing.T, frame []byte) { + _, err := faketls.ParseClientHello(FuzzClientHelloSecret, frame) + + // a probability of having != err is almost negligible + require.Error(t, err) + }) +} diff --git a/mtglib/internal/faketls/init.go b/mtglib/internal/faketls/init.go index 3a305a5..b514b21 100644 --- a/mtglib/internal/faketls/init.go +++ b/mtglib/internal/faketls/init.go @@ -19,7 +19,7 @@ const ( // ClientHelloMinLen is a minimal possible length of // ClientHello record. - ClientHelloMinLen = 4 + ClientHelloMinLen = 6 // WelcomePacketRandomOffset is an offset of random in ServerHello // packet (including record envelope).