diff --git a/lib/srv/db/mysql/protocol/fuzz_test.go b/lib/srv/db/mysql/protocol/fuzz_test.go new file mode 100644 index 00000000000..18f97bb15ba --- /dev/null +++ b/lib/srv/db/mysql/protocol/fuzz_test.go @@ -0,0 +1,44 @@ +//go:build go1.18 + +/* +Copyright 2022 Gravitational, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package protocol + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/require" +) + +func FuzzParsePacket(f *testing.F) { + testcases := [][]byte{ + {}, + []byte("00000"), + } + + for _, tc := range testcases { + f.Add(tc) + } + + f.Fuzz(func(t *testing.T, packet []byte) { + r := bytes.NewReader(packet) + require.NotPanics(t, func() { + _, _ = ParsePacket(r) + }) + }) +}