@@ -116,7 +116,7 @@ func (f *Function) RunFunction(_ context.Context, req *fnv1beta1.RunFunctionRequ
116116
117117// Build requirements takes input and outputs an array of external resoruce requirements to request
118118// from Crossplane's external resource API.
119- func buildRequirements (in * v1beta1.Input , xr * resource.Composite ) (* fnv1beta1.Requirements , error ) {
119+ func buildRequirements (in * v1beta1.Input , xr * resource.Composite ) (* fnv1beta1.Requirements , error ) { //nolint:gocyclo // Adding non-nil validations increases function complexity.
120120 extraResources := make (map [string ]* fnv1beta1.ResourceSelector , len (in .Spec .ExtraResources ))
121121 for _ , extraResource := range in .Spec .ExtraResources {
122122 extraResName := extraResource .Into
@@ -134,9 +134,14 @@ func buildRequirements(in *v1beta1.Input, xr *resource.Composite) (*fnv1beta1.Re
134134 for _ , selector := range extraResource .Selector .MatchLabels {
135135 switch selector .GetType () {
136136 case v1beta1 .ResourceSourceSelectorLabelMatcherTypeValue :
137- // TODO validate value not to be nil
137+ if selector .Value == nil {
138+ return nil , errors .New ("Value cannot be nil for type 'Value'" )
139+ }
138140 matchLabels [selector .Key ] = * selector .Value
139141 case v1beta1 .ResourceSourceSelectorLabelMatcherTypeFromCompositeFieldPath :
142+ if selector .ValueFromFieldPath == nil {
143+ return nil , errors .New ("ValueFromFieldPath cannot be nil for type 'FromCompositeFieldPath'" )
144+ }
140145 value , err := fieldpath .Pave (xr .Resource .Object ).GetString (* selector .ValueFromFieldPath )
141146 if err != nil {
142147 if ! selector .FromFieldPathIsOptional () {
0 commit comments