24
fuzz "github.com/AdaLogics/go-fuzz-headers"
26
"istio.io/api/operator/v1alpha1"
27
"istio.io/istio/operator/pkg/apis/istio"
28
"istio.io/istio/operator/pkg/apis/istio/v1alpha1/validation"
29
"istio.io/istio/operator/pkg/controlplane"
30
"istio.io/istio/operator/pkg/name"
31
"istio.io/istio/operator/pkg/object"
32
"istio.io/istio/operator/pkg/patch"
33
"istio.io/istio/operator/pkg/translate"
34
"istio.io/istio/operator/pkg/util"
35
"istio.io/istio/operator/pkg/validate"
36
"istio.io/istio/pkg/config/analysis/diag"
37
"istio.io/istio/pkg/config/resource"
40
func FuzzCheckIstioOperatorSpec(data []byte) int {
41
f := fuzz.NewConsumer(data)
43
ispec := &v1alpha1.IstioOperatorSpec{}
44
err := f.GenerateStruct(ispec)
48
_ = validate.CheckIstioOperatorSpec(ispec, false)
49
_ = validate.CheckIstioOperatorSpec(ispec, true)
53
func FuzzV1Alpha1ValidateConfig(data []byte) int {
54
f := fuzz.NewConsumer(data)
56
iop := &v1alpha1.IstioOperatorSpec{}
57
err := f.GenerateStruct(iop)
61
_, _ = validation.ValidateConfig(false, iop)
65
func FuzzGetEnabledComponents(data []byte) int {
66
f := fuzz.NewConsumer(data)
68
iopSpec := &v1alpha1.IstioOperatorSpec{}
69
err := f.GenerateStruct(iopSpec)
73
_, _ = translate.GetEnabledComponents(iopSpec)
77
func FuzzUnmarshalAndValidateIOPS(data []byte) int {
78
_, _ = istio.UnmarshalAndValidateIOPS(string(data))
82
func FuzzRenderManifests(data []byte) int {
83
f := fuzz.NewConsumer(data)
84
f.AllowUnexportedFields()
86
cp := &controlplane.IstioControlPlane{}
87
err := f.GenerateStruct(cp)
91
_, _ = cp.RenderManifest()
95
func FuzzOverlayIOP(data []byte) int {
96
f := fuzz.NewConsumer(data)
98
base, err := f.GetString()
102
overlay, err := f.GetString()
106
_, err = util.OverlayIOP(base, overlay)
113
func FuzzNewControlplane(data []byte) int {
114
f := fuzz.NewConsumer(data)
115
f.AllowUnexportedFields()
117
inInstallSpec := &v1alpha1.IstioOperatorSpec{}
118
err := f.GenerateStruct(inInstallSpec)
122
inTranslator := &translate.Translator{}
123
err = f.GenerateStruct(inTranslator)
127
if inTranslator.APIMapping == nil {
130
if inTranslator.KubernetesMapping == nil {
133
if inTranslator.GlobalNamespaces == nil {
136
if inTranslator.ComponentMaps == nil {
139
cm := &translate.ComponentMaps{}
140
err = f.GenerateStruct(cm)
144
inTranslator.ComponentMaps[name.PilotComponentName] = cm
145
_, _ = controlplane.NewIstioControlPlane(inInstallSpec, inTranslator, nil, nil)
149
func FuzzResolveK8sConflict(data []byte) int {
150
f := fuzz.NewConsumer(data)
151
f.AllowUnexportedFields()
153
ko1 := &object.K8sObject{}
154
err := f.GenerateStruct(ko1)
158
_ = ko1.ResolveK8sConflict()
162
func FuzzYAMLManifestPatch(data []byte) int {
163
f := fuzz.NewConsumer(data)
164
f.AllowUnexportedFields()
166
overlay := []*v1alpha1.K8SObjectOverlay{}
167
number, err := f.GetInt()
171
for i := 0; i < number%20; i++ {
172
o := &v1alpha1.K8SObjectOverlay{}
173
err := f.GenerateStruct(o)
177
overlay = append(overlay, o)
179
baseYAML, err := f.GetString()
183
defaultNamespace, err := f.GetString()
188
_, _ = patch.YAMLManifestPatch(baseYAML, defaultNamespace, overlay)
192
func FuzzGalleyDiag(data []byte) int {
193
f := fuzz.NewConsumer(data)
195
code, err := f.GetString()
199
templ, err := f.GetString()
203
mt := diag.NewMessageType(diag.Error, code, templ)
204
resourceIsNil, err := f.GetBool()
208
parameter, err := f.GetString()
212
var ri *resource.Instance
216
err = f.GenerateStruct(ri)
221
m := diag.NewMessage(mt, ri, parameter)
222
_ = m.Unstructured(true)
223
_ = m.UnstructuredAnalysisMessageBase()
225
_, _ = m.MarshalJSON()
227
replStr, err := f.GetString()
229
_ = m.ReplaceLine(replStr)