mirror of https://github.com/linkerd/linkerd2.git
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package fuzzing
|
|
|
|
import (
|
|
fuzz "github.com/AdaLogics/go-fuzz-headers"
|
|
"github.com/linkerd/linkerd2/pkg/healthcheck"
|
|
"github.com/linkerd/linkerd2/pkg/util"
|
|
corev1 "k8s.io/api/core/v1"
|
|
)
|
|
|
|
// FuzzParsePorts fuzzes the ParsePorts function.
|
|
func FuzzParsePorts(data []byte) int {
|
|
_ = util.ParsePorts(string(data))
|
|
return 1
|
|
}
|
|
|
|
// FuzzParseContainerOpaquePorts fuzzes the ParseContainerOpaquePorts function.
|
|
func FuzzParseContainerOpaquePorts(data []byte) int {
|
|
f := fuzz.NewConsumer(data)
|
|
|
|
qtyOfContainers, err := f.GetInt()
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
qtyOfContainers %= 20
|
|
|
|
containers := make([]corev1.Container, 0)
|
|
for i := 0; i < qtyOfContainers; i++ {
|
|
newContainer := corev1.Container{}
|
|
err = f.GenerateStruct(&newContainer)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
containers = append(containers, newContainer)
|
|
}
|
|
override, err := f.GetString()
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
_ = util.ParseContainerOpaquePorts(override, util.GetNamedPorts(containers))
|
|
return 1
|
|
}
|
|
|
|
// FuzzHealthCheck fuzzes the HealthCheck method for the healthchecker.
|
|
func FuzzHealthCheck(data []byte) int {
|
|
f := fuzz.NewConsumer(data)
|
|
options := &healthcheck.Options{}
|
|
err := f.GenerateStruct(options)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
_ = healthcheck.NewHealthChecker([]healthcheck.CategoryID{healthcheck.KubernetesAPIChecks}, options)
|
|
return 1
|
|
}
|