knative / knative/func

k8s: ProcessEnvs appends env var before checking createEnvVarSource error

Open
#3,798 1 comment 0 reactions 1 assignee Claimed by @Elvand-Lie View on GitHub
kind/bug
Dominant language
Go
Stars
365
Forks
223
Avg merge
2d 3h
Merged PRs (30d)
25

Description

In pkg/k8s/deployer.go, ProcessEnvs (around line 635-639) calls createEnvVarSource, then immediately appends the returned valueFrom to envVars BEFORE checking the error:

valueFrom, err := createEnvVarSource(slices, referencedSecrets, referencedConfigMaps)
envVars = append(envVars, corev1.EnvVar{Name: *env.Name, ValueFrom: valueFrom})
if err != nil {
return nil, nil, err
}

While the function does return nil on error (so the caller discards the slice), this violates the standard Go error-handling pattern of checking errors before using return values. If any future refactoring changes the return to a continue, the partially-initialized entry stays in the list.

Additionally, createEnvFromSource and createEnvVarSource (lines 718-738 and 753-785) both validate that sourceName is non-empty only AFTER using it to construct resource references and inserting it into the referenced sets. The empty-string checks should be moved before the switch statement that uses sourceName.

Fix: reorder the append to happen after the error check, and move the empty-name validation earlier in both helper functions.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.