From f82efc7f8e0b7a475202e140544d830646f3599a Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Wed, 24 Apr 2024 15:57:52 +1000 Subject: [PATCH] Fuzz zip unmarshalers --- atalk/zip/zip_test.go | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 atalk/zip/zip_test.go diff --git a/atalk/zip/zip_test.go b/atalk/zip/zip_test.go new file mode 100644 index 0000000..8dd4b8c --- /dev/null +++ b/atalk/zip/zip_test.go @@ -0,0 +1,61 @@ +/* + Copyright 2024 Josh Deprez + + 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 zip + +import ( + "testing" + + "gitea.drjosh.dev/josh/jrouter/atalk/atp" +) + +func FuzzUnmarshalPacket(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + _, _ = UnmarshalPacket(data) + }) +} + +func FuzzUnmarshalTReq(f *testing.F) { + f.Fuzz(func(t *testing.T, xo bool, trti, bitmap uint8, tid uint16, userBytes uint32, data []byte) { + if len(data) < 4 { + return + } + _, _ = UnmarshalTReq(&atp.TReq{ + ExactlyOnce: xo, + TRelTimeoutIndicator: trti, + Bitmap: bitmap, + TransactionID: tid, + UserBytes: [4]byte(data[:4]), + Data: data[4:], + }) + }) +} + +func FuzzUnmarshalTResp(f *testing.F) { + f.Fuzz(func(t *testing.T, eom, sts bool, seq uint8, tid uint16, userBytes uint32, data []byte) { + if len(data) < 4 { + return + } + _, _ = UnmarshalTResp(&atp.TResp{ + EndOfMessage: eom, + SendTransactionStatus: sts, + Sequence: seq, + TransactionID: tid, + UserBytes: [4]byte(data[:4]), + Data: data[4:], + }) + }) +}