Skip to content

Commit

Permalink
add: new go-fuzz targets
Browse files Browse the repository at this point in the history
Signed-off-by: Arjun <[email protected]>
  • Loading branch information
pkillarjun committed Nov 11, 2024
1 parent 1f3e304 commit 53c5234
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 0 deletions.
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,18 @@ cover:
# Generate the HTML report that can be viewed from the browser in CI.
$Q go tool cover -html ".cover/c.out" -o .cover/all.html

.PHONY: fuzz
fuzz:
@go test -fuzz=FuzzIPDecoder -fuzztime=600s ./packet
@go test -fuzz=FuzzICMPDecoder -fuzztime=600s ./packet
@go test -fuzz=FuzzSessionWrite -fuzztime=600s ./quic/v3
@go test -fuzz=FuzzSessionServe -fuzztime=600s ./quic/v3
@go test -fuzz=FuzzRegistrationDatagram -fuzztime=600s ./quic/v3
@go test -fuzz=FuzzPayloadDatagram -fuzztime=600s ./quic/v3
@go test -fuzz=FuzzRegistrationResponseDatagram -fuzztime=600s ./quic/v3
@go test -fuzz=FuzzNewIdentity -fuzztime=600s ./tracing
@go test -fuzz=FuzzNewAccessValidator -fuzztime=600s ./validation

.PHONY: install-go
install-go:
rm -rf ${CF_GO_PATH}
Expand Down
15 changes: 15 additions & 0 deletions packet/decoder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,3 +254,18 @@ func (u *UDP) EncodeLayers() ([]gopacket.SerializableLayer, error) {
udpLayer.SetNetworkLayerForChecksum(ipLayers[0].(gopacket.NetworkLayer))
return append(ipLayers, &udpLayer), nil
}

func FuzzIPDecoder(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
ipDecoder := NewIPDecoder()
ipDecoder.Decode(RawPacket{Data: data})

})
}

func FuzzICMPDecoder(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
icmpDecoder := NewICMPDecoder()
icmpDecoder.Decode(RawPacket{Data: data})
})
}
27 changes: 27 additions & 0 deletions quic/v3/datagram_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -350,3 +350,30 @@ func compareRegistrationDatagrams(t *testing.T, l *v3.UDPSessionRegistrationData
l.IdleDurationHint == r.IdleDurationHint &&
l.Traced == r.Traced
}

func FuzzRegistrationDatagram(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
unmarshaled := v3.UDPSessionRegistrationDatagram{}
err := unmarshaled.UnmarshalBinary(data)
if err == nil {
_, _ = unmarshaled.MarshalBinary()
}
})
}

func FuzzPayloadDatagram(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
unmarshaled := v3.UDPSessionPayloadDatagram{}
_ = unmarshaled.UnmarshalBinary(data)
})
}

func FuzzRegistrationResponseDatagram(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
unmarshaled := v3.UDPSessionRegistrationResponseDatagram{}
err := unmarshaled.UnmarshalBinary(data)
if err == nil {
_, _ = unmarshaled.MarshalBinary()
}
})
}
6 changes: 6 additions & 0 deletions tracing/tracing_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,9 @@ func TestAddingSpansWithNilMap(t *testing.T) {
// a panic shouldn't occur
tr.AddSpans(nil)
}

func FuzzNewIdentity(f *testing.F) {
f.Fuzz(func(t *testing.T, trace string) {
_, _ = NewIdentity(trace)
})
}
7 changes: 7 additions & 0 deletions validation/validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,3 +197,10 @@ func createSecureMockServerAndClient(handler http.Handler) (*httptest.Server, *h

return server, client, nil
}

func FuzzNewAccessValidator(f *testing.F) {
f.Fuzz(func(t *testing.T, domain string, issuer string, applicationAUD string) {
ctx := context.Background()
_, _ = NewAccessValidator(ctx, domain, issuer, applicationAUD)
})
}

0 comments on commit 53c5234

Please sign in to comment.