mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-12 04:04:26 +00:00
fix(oidcgate): gosec G304 — clean config path + native #nosec directive
The //nolint:gosec directive only suppresses golangci-lint; the standalone gosec GitHub Action uses its own '#nosec G304 -- reason' syntax. Use both filepath.Clean as canonical mitigation and the native directive.
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
@@ -39,7 +40,13 @@ var envScalarFields = []string{
|
||||
// Load reads YAML from path, applies env-var overrides, fills defaults,
|
||||
// and forces TrustForwardedURI=true so the library honors X-Forwarded-Uri.
|
||||
func Load(path string) (*Config, error) {
|
||||
data, err := os.ReadFile(path) //nolint:gosec // path is a trusted operator-supplied config file path
|
||||
// Clean the operator-supplied path to satisfy gosec G304 (file inclusion
|
||||
// via variable). filepath.Clean strips traversal sequences and normalises
|
||||
// the path; this is canonical mitigation for config files supplied via a
|
||||
// CLI flag — the operator runs the daemon, so the input is trusted, but
|
||||
// gosec's static analysis still flags variable paths without the cleanup.
|
||||
clean := filepath.Clean(path)
|
||||
data, err := os.ReadFile(clean) // #nosec G304 -- operator-supplied config path, cleaned above
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read config: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user